Hi Arnd,
I love your patch! Perhaps something to improve:
[auto build test WARNING on staging/staging-testing]
url:
https://github.com/0day-ci/linux/commits/Arnd-Bergmann/staging-vchiq-rewo...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
8436f932d84b1d53d2f4a2fa88c7aacdb0313265
config: arm64-randconfig-s032-20200921 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.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.2-201-g24bdaac6-dirty
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1509:50: sparse: sparse:
incorrect type in initializer (different address spaces) @@ expected int enum
vchiq_status ( *callback )( ... ) @@ got void [noderef] __user * @@
> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1509:50: sparse:
expected int enum vchiq_status ( *callback )( ... )
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1509:50: sparse: got
void [noderef] __user *
>
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1510:50: sparse: sparse:
incorrect type in initializer (different address spaces) @@ expected void *userdata @@
got void [noderef] __user * @@
> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1510:50: sparse:
expected void *userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1510:50: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1629:13: sparse: sparse:
incorrect type in initializer (different address spaces) @@ expected void *__pu_val @@
got void [noderef] __user * @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1629:13: sparse:
expected void *__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1629:13: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1631:13: sparse: sparse:
incorrect type in initializer (different address spaces) @@ expected void *__pu_val @@
got void [noderef] __user * @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1631:13: sparse:
expected void *__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1631:13: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1706:13: sparse: sparse:
incorrect type in initializer (different address spaces) @@ expected struct
vchiq_completion_data *__pu_val @@ got void [noderef] __user * @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1706:13: sparse:
expected struct vchiq_completion_data *__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1706:13: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1709:13: sparse: sparse:
incorrect type in initializer (different address spaces) @@ expected void **__pu_val
@@ got void [noderef] __user * @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1709:13: sparse:
expected void **__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1709:13: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1756:13: sparse: sparse:
incorrect type in initializer (different address spaces) @@ expected struct
vchiq_completion_data *__pu_val @@ got struct vchiq_completion_data [noderef] __user
*[assigned] completion @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1756:13: sparse:
expected struct vchiq_completion_data *__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1756:13: sparse: got
struct vchiq_completion_data [noderef] __user *[assigned] completion
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1786:59: sparse: sparse:
incorrect type in argument 1 (different address spaces) @@ expected void [noderef]
__user *uptr @@ got struct vchiq_header *[addressable] header @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1786:59: sparse:
expected void [noderef] __user *uptr
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1786:59: sparse: got
struct vchiq_header *[addressable] header
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1788:45: sparse: sparse:
incorrect type in argument 1 (different address spaces) @@ expected void [noderef]
__user *uptr @@ got void *[addressable] service_userdata @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1788:45: sparse:
expected void [noderef] __user *uptr
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1788:45: sparse: got
void *[addressable] service_userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1790:45: sparse: sparse:
incorrect type in argument 1 (different address spaces) @@ expected void [noderef]
__user *uptr @@ got void *[addressable] bulk_userdata @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1790:45: sparse:
expected void [noderef] __user *uptr
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1790:45: sparse: got
void *[addressable] bulk_userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1844:13: sparse: sparse:
incorrect type in initializer (different address spaces) @@ expected void *__pu_val @@
got void [noderef] __user * @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1844:13: sparse:
expected void *__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1844:13: sparse: got
void [noderef] __user *
#
https://github.com/0day-ci/linux/commit/69c0b51efb112af6fa886dca152e2bd38...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Arnd-Bergmann/staging-vchiq-rework-compat-handling/20200918-185438
git checkout 69c0b51efb112af6fa886dca152e2bd3824c126c
vim +1509 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
1489
1490 #define VCHIQ_IOC_CREATE_SERVICE32 \
1491 _IOWR(VCHIQ_IOC_MAGIC, 2, struct vchiq_create_service32)
1492
1493 static long
1494 vchiq_compat_ioctl_create_service(
1495 struct file *file,
1496 unsigned int cmd,
1497 struct vchiq_create_service32 __user *ptrargs32)
1498 {
1499 struct vchiq_create_service args;
1500 struct vchiq_create_service32 args32;
1501 long ret;
1502
1503 if (copy_from_user(&args32, ptrargs32, sizeof(args32)))
1504 return -EFAULT;
1505
1506 args = (struct vchiq_create_service) {
1507 .params = {
1508 .fourcc = args32.params.fourcc,
1509 .callback = compat_ptr(args32.params.callback),
1510 .userdata = compat_ptr(args32.params.userdata),
1511 .version =
args32.params.version,
1512 .version_min = args32.params.version_min,
1513 },
1514 .is_open = args32.is_open,
1515 .is_vchi = args32.is_vchi,
1516 .handle = args32.handle,
1517 };
1518
1519 ret = vchiq_ioc_create_service(file->private_data, &args);
1520 if (ret < 0)
1521 return ret;
1522
1523 if (put_user(args.handle, &ptrargs32->handle)) {
1524 vchiq_remove_service(args.handle);
1525 return -EFAULT;
1526 }
1527
1528 return 0;
1529 }
1530
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org