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:1519: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:1519:50: sparse:
expected int enum vchiq_status ( *callback )( ... )
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1519:50: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1520: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:1520:50: sparse:
expected void *userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1520:50: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1639: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:1639:13: sparse:
expected void *__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1639:13: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1641: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:1641:13: sparse:
expected void *__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1641:13: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1716: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:1716:13: sparse:
expected struct vchiq_completion_data *__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1716:13: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1719: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:1719:13: sparse:
expected void **__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1719:13: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1766: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:1766:13: sparse:
expected struct vchiq_completion_data *__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1766:13: sparse: got
struct vchiq_completion_data [noderef] __user *[assigned] completion
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1796: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:1796:59: sparse:
expected void [noderef] __user *uptr
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1796:59: sparse: got
struct vchiq_header *[addressable] header
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1798: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:1798:45: sparse:
expected void [noderef] __user *uptr
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1798:45: sparse: got
void *[addressable] service_userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1800: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:1800:45: sparse:
expected void [noderef] __user *uptr
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1800:45: sparse: got
void *[addressable] bulk_userdata
>
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1849:45: sparse: sparse:
incorrect type in initializer (different address spaces) @@ expected void *buf @@
got void [noderef] __user * @@
> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1849:45: sparse:
expected void *buf
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1849:45: sparse: got
void [noderef] __user *
#
https://github.com/0day-ci/linux/commit/43c2a8584dc3a6fc1d6042cc06e1d1da3...
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 43c2a8584dc3a6fc1d6042cc06e1d1da38001ba4
vim +1849 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
1830
1831 #define VCHIQ_IOC_DEQUEUE_MESSAGE32 \
1832 _IOWR(VCHIQ_IOC_MAGIC, 8, struct vchiq_dequeue_message32)
1833
1834 static long
1835 vchiq_compat_ioctl_dequeue_message(struct file *file,
1836 unsigned int cmd,
1837 struct vchiq_dequeue_message32 __user *arg)
1838 {
1839 struct vchiq_dequeue_message32 args32;
1840 struct vchiq_dequeue_message args;
1841
1842 if (copy_from_user(&args32, arg, sizeof(args32)))
1843 return -EFAULT;
1844
1845 args = (struct vchiq_dequeue_message) {
1846 .handle = args32.handle,
1847 .blocking = args32.blocking,
1848 .bufsize = args32.bufsize,
1849 .buf = compat_ptr(args32.buf),
1850 };
1851
1852 return vchiq_ioc_dequeue_message(file->private_data, &args);
1853 }
1854
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org