Hi Janis, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on 4fe89d07dcc2804c8b562f6c7896a45643d34b2f] url: https://github.com/intel-lab-lkp/linux/commits/Janis-Schoetterl-Glausch/KVM-s390-Extend-MEM_OP-ioctl-by-storage-key-checked-cmpxchg/20221013-045733 base: 4fe89d07dcc2804c8b562f6c7896a45643d34b2f config: s390-randconfig-s051-20221012 compiler: s390-linux-gcc (GCC) 12.1.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.4-39-gce1a6720-dirty # https://github.com/intel-lab-lkp/linux/commit/427c3a07629c563c58a83fa1febb07d1345e7a9d git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Janis-Schoetterl-Glausch/KVM-s390-Extend-MEM_OP-ioctl-by-storage-key-checked-cmpxchg/20221013-045733 git checkout 427c3a07629c563c58a83fa1febb07d1345e7a9d # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=s390 SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) arch/s390/kvm/gaccess.c: note: in included file (through include/linux/uaccess.h, include/linux/sched/task.h, include/linux/sched/signal.h, ...): >> arch/s390/include/asm/uaccess.h:560:56: sparse: sparse: cast removes address space '__user' of expression vim +/__user +560 arch/s390/include/asm/uaccess.h a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 459 a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 460 /** a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 461 * cmpxchg_user_key_size() - cmpxchg with user space target, honoring storage keys a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 462 * @size: Size of the value being cmpxchg'ed, one of 1,2,4,8,16. a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 463 * @address: User space address of value to compare to *@old_p and exchange with a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 464 * @new. Must be aligned to @size. a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 465 * @old_p: Pointer to old value. Interpreted as a @size byte integer and compared a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 466 * to the content pointed to by @address in order to determine if the a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 467 * exchange occurs. The value read from @address is written back to *@old_p. a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 468 * @new: New value to place at @address, interpreted as a @size byte integer. a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 469 * @access_key: Access key to use for checking storage key protection. a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 470 * a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 471 * Perform a cmpxchg on a user space target, honoring storage key protection. a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 472 * @access_key alone determines how key checking is performed, neither a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 473 * storage-protection-override nor fetch-protection-override apply. a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 474 * a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 475 * Return: 0: successful exchange a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 476 * 1: exchange failed a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 477 * -EFAULT: @address not accessible or not naturally aligned a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 478 * -EINVAL: invalid @size a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 479 */ a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 480 static __always_inline int cmpxchg_user_key_size(int size, void __user *address, a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 481 unsigned __int128 *old_p, a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 482 unsigned __int128 new, u8 access_key) a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 483 { a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 484 union { a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 485 u32 word; a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 486 u64 doubleword; a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 487 } old; a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 488 int ret = -EFAULT; a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 489 a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 490 /* a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 491 * The following assumes that: a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 492 * * the current psw key is the default key a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 493 * * no storage protection overrides are in effect a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 494 */ a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 495 might_fault(); a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 496 switch (size) { a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 497 case 16: a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 498 asm volatile( a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 499 "spka 0(%[access_key])\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 500 " sacf 256\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 501 "0: cdsg %[old],%[new],%[target]\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 502 "1: ipm %[ret]\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 503 " srl %[ret],28\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 504 "2: sacf 768\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 505 " spka %[default_key]\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 506 EX_TABLE(0b, 2b) EX_TABLE(1b, 2b) a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 507 : [old] "+d" (*old_p), a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 508 [target] "+Q" (*(unsigned __int128 __user *)address), a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 509 [ret] "+d" (ret) a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 510 : [access_key] "a" (access_key << 4), a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 511 [new] "d" (new), a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 512 [default_key] "J" (PAGE_DEFAULT_KEY) a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 513 : "cc" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 514 ); a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 515 return ret; a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 516 case 8: a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 517 old.doubleword = *old_p; a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 518 asm volatile( a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 519 "spka 0(%[access_key])\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 520 " sacf 256\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 521 "0: csg %[old],%[new],%[target]\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 522 "1: ipm %[ret]\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 523 " srl %[ret],28\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 524 "2: sacf 768\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 525 " spka %[default_key]\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 526 EX_TABLE(0b, 2b) EX_TABLE(1b, 2b) a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 527 : [old] "+d" (old.doubleword), a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 528 [target] "+Q" (*(u64 __user *)address), a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 529 [ret] "+d" (ret) a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 530 : [access_key] "a" (access_key << 4), a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 531 [new] "d" ((u64)new), a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 532 [default_key] "J" (PAGE_DEFAULT_KEY) a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 533 : "cc" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 534 ); a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 535 *old_p = old.doubleword; a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 536 return ret; a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 537 case 4: a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 538 old.word = *old_p; a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 539 asm volatile( a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 540 "spka 0(%[access_key])\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 541 " sacf 256\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 542 "0: cs %[old],%[new],%[target]\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 543 "1: ipm %[ret]\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 544 " srl %[ret],28\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 545 "2: sacf 768\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 546 " spka %[default_key]\n" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 547 EX_TABLE(0b, 2b) EX_TABLE(1b, 2b) a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 548 : [old] "+d" (old.word), a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 549 [target] "+Q" (*(u32 __user *)address), a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 550 [ret] "+d" (ret) a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 551 : [access_key] "a" (access_key << 4), a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 552 [new] "d" ((u32)new), a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 553 [default_key] "J" (PAGE_DEFAULT_KEY) a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 554 : "cc" a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 555 ); a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 556 *old_p = old.word; a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 557 return ret; a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 558 case 2: a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 559 case 1: a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 @560 return __cmpxchg_user_key_small(size, (u64)address, old_p, new, access_key); a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 561 default: a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 562 return -EINVAL; a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 563 } a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 564 } a5a09360ca0f69 Janis Schoetterl-Glausch 2022-10-12 565 -- 0-DAY CI Kernel Test Service https://01.org/lkp