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:1538: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:1538:50: sparse:
expected int enum vchiq_status ( *callback )( ... )
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1538:50: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1539: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:1539:50: sparse:
expected void *userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1539:50: sparse: got
void [noderef] __user *
>
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1654:39: sparse: sparse:
incorrect type in initializer (different address spaces) @@ expected void *data @@
got void [noderef] __user * @@
> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1654:39: sparse:
expected void *data
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1654:39: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1656:39: 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:1656:39: sparse:
expected void *userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1656:39: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1714: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:1714:13: sparse:
expected struct vchiq_completion_data *__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1714:13: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1717: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:1717:13: sparse:
expected void **__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1717:13: sparse: got
void [noderef] __user *
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1764: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:1764:13: sparse:
expected struct vchiq_completion_data *__pu_val
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1764:13: sparse: got
struct vchiq_completion_data [noderef] __user *[assigned] completion
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1794: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:1794:59: sparse:
expected void [noderef] __user *uptr
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1794:59: sparse: got
struct vchiq_header *[addressable] header
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1796: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:1796:45: sparse:
expected void [noderef] __user *uptr
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1796:45: sparse: got
void *[addressable] service_userdata
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] bulk_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] bulk_userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1847: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:1847:45: sparse:
expected void *buf
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1847:45: sparse: got
void [noderef] __user *
#
https://github.com/0day-ci/linux/commit/0e0191ba5a550b33d052c3639715f54e9...
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 0e0191ba5a550b33d052c3639715f54e970f6033
vim +1654 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
1633
1634 #define VCHIQ_IOC_QUEUE_BULK_TRANSMIT32 \
1635 _IOWR(VCHIQ_IOC_MAGIC, 5, struct vchiq_queue_bulk_transfer32)
1636 #define VCHIQ_IOC_QUEUE_BULK_RECEIVE32 \
1637 _IOWR(VCHIQ_IOC_MAGIC, 6, struct vchiq_queue_bulk_transfer32)
1638
1639 static long
1640 vchiq_compat_ioctl_queue_bulk(struct file *file,
1641 unsigned int cmd,
1642 struct vchiq_queue_bulk_transfer32 __user *argp)
1643 {
1644 struct vchiq_queue_bulk_transfer32 args32;
1645 struct vchiq_queue_bulk_transfer args;
1646 enum vchiq_bulk_dir dir = (cmd == VCHIQ_IOC_QUEUE_BULK_TRANSMIT) ?
1647 VCHIQ_BULK_TRANSMIT : VCHIQ_BULK_RECEIVE;
1648
1649 if (copy_from_user(&args32, argp, sizeof(args32)))
1650 return -EFAULT;
1651
1652 args = (struct vchiq_queue_bulk_transfer) {
1653 .handle = args32.handle,
1654 .data = compat_ptr(args32.data),
1655 .size =
args32.size,
1656 .userdata = compat_ptr(args32.userdata),
1657 .mode = args32.mode,
1658 };
1659
1660 return vchiq_irq_queue_bulk_tx_rx(file->private_data, &args,
1661 dir, &argp->mode);
1662 }
1663
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org