tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: dcde237b9b0eb1d19306e6f48c0a4e058907619f commit: 670d0a4b10704667765f7d18f7592993d02783aa sparse: use identifiers to define address spaces date: 3 weeks ago config: openrisc-randconfig-s032-20200709 (attached as .config) compiler: or1k-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-37-gc9676a3b-dirty git checkout 670d0a4b10704667765f7d18f7592993d02783aa # 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=openrisc
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> sparse warnings: (new ones prefixed by >>) >> kernel/bpf/syscall.c:1384:13: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected unsigned int *__pu_addr @@ >> got unsigned int [noderef] __user * @@ kernel/bpf/syscall.c:1384:13: sparse: expected unsigned int *__pu_addr >> kernel/bpf/syscall.c:1384:13: sparse: got unsigned int [noderef] __user * >> kernel/bpf/syscall.c:2648:21: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected char *__pu_addr @@ got char >> [noderef] __user * @@ kernel/bpf/syscall.c:2648:21: sparse: expected char *__pu_addr >> kernel/bpf/syscall.c:2648:21: sparse: got char [noderef] __user * kernel/bpf/syscall.c:3014:23: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int *__pu_addr @@ got unsigned int [noderef] __user * @@ kernel/bpf/syscall.c:3014:23: sparse: expected unsigned int *__pu_addr kernel/bpf/syscall.c:3014:23: sparse: got unsigned int [noderef] __user * >> kernel/bpf/syscall.c:3263:29: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected unsigned int *__pu_addr @@ >> got unsigned int [noderef] [usertype] __user * @@ kernel/bpf/syscall.c:3263:29: sparse: expected unsigned int *__pu_addr >> kernel/bpf/syscall.c:3263:29: sparse: got unsigned int [noderef] >> [usertype] __user * >> kernel/bpf/syscall.c:3380:45: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected unsigned long long *__pu_addr @@ >> got unsigned long long [noderef] [usertype] __user * @@ kernel/bpf/syscall.c:3380:45: sparse: expected unsigned long long *__pu_addr >> kernel/bpf/syscall.c:3380:45: sparse: got unsigned long long [noderef] >> [usertype] __user * kernel/bpf/syscall.c:3386:37: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned long long *__pu_addr @@ got unsigned long long [noderef] [usertype] __user * @@ kernel/bpf/syscall.c:3386:37: sparse: expected unsigned long long *__pu_addr kernel/bpf/syscall.c:3386:37: sparse: got unsigned long long [noderef] [usertype] __user * kernel/bpf/syscall.c:3408:45: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int *__pu_addr @@ got unsigned int [noderef] [usertype] __user * @@ kernel/bpf/syscall.c:3408:45: sparse: expected unsigned int *__pu_addr kernel/bpf/syscall.c:3408:45: sparse: got unsigned int [noderef] [usertype] __user * kernel/bpf/syscall.c:3413:37: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int *__pu_addr @@ got unsigned int [noderef] [usertype] __user * @@ kernel/bpf/syscall.c:3413:37: sparse: expected unsigned int *__pu_addr kernel/bpf/syscall.c:3413:37: sparse: got unsigned int [noderef] [usertype] __user * kernel/bpf/syscall.c:3461:37: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned long long *__pu_addr @@ got unsigned long long [noderef] [usertype] __user * @@ kernel/bpf/syscall.c:3461:37: sparse: expected unsigned long long *__pu_addr kernel/bpf/syscall.c:3461:37: sparse: got unsigned long long [noderef] [usertype] __user * kernel/bpf/syscall.c:3494:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int *__pu_addr @@ got unsigned int [noderef] __user * @@ kernel/bpf/syscall.c:3494:13: sparse: expected unsigned int *__pu_addr kernel/bpf/syscall.c:3494:13: sparse: got unsigned int [noderef] __user * kernel/bpf/syscall.c:3537:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int *__pu_addr @@ got unsigned int [noderef] __user * @@ kernel/bpf/syscall.c:3537:13: sparse: expected unsigned int *__pu_addr kernel/bpf/syscall.c:3537:13: sparse: got unsigned int [noderef] __user * kernel/bpf/syscall.c:3587:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int *__pu_addr @@ got unsigned int [noderef] __user * @@ kernel/bpf/syscall.c:3587:13: sparse: expected unsigned int *__pu_addr kernel/bpf/syscall.c:3587:13: sparse: got unsigned int [noderef] __user * kernel/bpf/syscall.c:3664:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int *__pu_addr @@ got unsigned int [noderef] __user * @@ kernel/bpf/syscall.c:3664:13: sparse: expected unsigned int *__pu_addr kernel/bpf/syscall.c:3664:13: sparse: got unsigned int [noderef] __user * >> kernel/bpf/syscall.c:3672:29: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected char *__pu_addr @@ got char >> [noderef] __user *ubuf @@ kernel/bpf/syscall.c:3672:29: sparse: expected char *__pu_addr >> kernel/bpf/syscall.c:3672:29: sparse: got char [noderef] __user *ubuf kernel/bpf/syscall.c:3687:29: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected char *__pu_addr @@ got char [noderef] __user * @@ kernel/bpf/syscall.c:3687:29: sparse: expected char *__pu_addr kernel/bpf/syscall.c:3687:29: sparse: got char [noderef] __user * kernel/bpf/syscall.c:3692:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int *__pu_addr @@ got unsigned int [noderef] __user * @@ kernel/bpf/syscall.c:3692:13: sparse: expected unsigned int *__pu_addr kernel/bpf/syscall.c:3692:13: sparse: got unsigned int [noderef] __user * kernel/bpf/syscall.c:3693:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int *__pu_addr @@ got unsigned int [noderef] __user * @@ kernel/bpf/syscall.c:3693:13: sparse: expected unsigned int *__pu_addr kernel/bpf/syscall.c:3693:13: sparse: got unsigned int [noderef] __user * >> kernel/bpf/syscall.c:3694:13: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected unsigned long long *__pu_addr @@ >> got unsigned long long [noderef] __user * @@ kernel/bpf/syscall.c:3694:13: sparse: expected unsigned long long *__pu_addr >> kernel/bpf/syscall.c:3694:13: sparse: got unsigned long long [noderef] >> __user * kernel/bpf/syscall.c:3695:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned long long *__pu_addr @@ got unsigned long long [noderef] __user * @@ kernel/bpf/syscall.c:3695:13: sparse: expected unsigned long long *__pu_addr kernel/bpf/syscall.c:3695:13: sparse: got unsigned long long [noderef] __user * include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ -- >> kernel/bpf/verifier.c:299:13: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected char *__pu_addr @@ got char >> [noderef] __user * @@ kernel/bpf/verifier.c:299:13: sparse: expected char *__pu_addr >> kernel/bpf/verifier.c:299:13: sparse: got char [noderef] __user * >> kernel/bpf/verifier.c:7595:37: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected unsigned int *__pu_addr @@ >> got unsigned int [noderef] __user * @@ kernel/bpf/verifier.c:7595:37: sparse: expected unsigned int *__pu_addr >> kernel/bpf/verifier.c:7595:37: sparse: got unsigned int [noderef] __user >> * kernel/bpf/verifier.c:7712:37: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int *__pu_addr @@ got unsigned int [noderef] __user * @@ kernel/bpf/verifier.c:7712:37: sparse: expected unsigned int *__pu_addr kernel/bpf/verifier.c:7712:37: sparse: got unsigned int [noderef] __user * kernel/bpf/verifier.c:9897:76: sparse: sparse: subtraction of functions? Share your drugs kernel/bpf/verifier.c:10272:81: sparse: sparse: subtraction of functions? Share your drugs kernel/bpf/verifier.c:10276:81: sparse: sparse: subtraction of functions? Share your drugs kernel/bpf/verifier.c:10280:81: sparse: sparse: subtraction of functions? Share your drugs kernel/bpf/verifier.c:10284:79: sparse: sparse: subtraction of functions? Share your drugs kernel/bpf/verifier.c:10288:78: sparse: sparse: subtraction of functions? Share your drugs kernel/bpf/verifier.c:10292:79: sparse: sparse: subtraction of functions? Share your drugs kernel/bpf/verifier.c:10335:38: sparse: sparse: subtraction of functions? Share your drugs include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from -- kernel/bpf/hashtab.c:622:19: sparse: sparse: subtraction of functions? Share your drugs kernel/bpf/hashtab.c:663:19: sparse: sparse: subtraction of functions? Share your drugs kernel/bpf/hashtab.c:1347:24: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void *ubatch @@ got void [noderef] __user * @@ kernel/bpf/hashtab.c:1347:24: sparse: expected void *ubatch kernel/bpf/hashtab.c:1347:24: sparse: got void [noderef] __user * >> kernel/bpf/hashtab.c:1372:13: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected unsigned int *__pu_addr @@ >> got unsigned int [noderef] __user * @@ kernel/bpf/hashtab.c:1372:13: sparse: expected unsigned int *__pu_addr >> kernel/bpf/hashtab.c:1372:13: sparse: got unsigned int [noderef] __user * kernel/bpf/hashtab.c:1376:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void *ubatch @@ kernel/bpf/hashtab.c:1376:46: sparse: expected void const [noderef] __user *from kernel/bpf/hashtab.c:1376:46: sparse: got void *ubatch kernel/bpf/hashtab.c:1537:16: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *ubatch @@ got void [noderef] __user * @@ kernel/bpf/hashtab.c:1537:16: sparse: expected void *ubatch kernel/bpf/hashtab.c:1537:16: sparse: got void [noderef] __user * kernel/bpf/hashtab.c:1538:26: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] __user *to @@ got void *ubatch @@ kernel/bpf/hashtab.c:1538:26: sparse: expected void [noderef] __user *to kernel/bpf/hashtab.c:1538:26: sparse: got void *ubatch kernel/bpf/hashtab.c:1539:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int *__pu_addr @@ got unsigned int [noderef] __user * @@ kernel/bpf/hashtab.c:1539:13: sparse: expected unsigned int *__pu_addr kernel/bpf/hashtab.c:1539:13: sparse: got unsigned int [noderef] __user * kernel/bpf/hashtab.c:1874:19: sparse: sparse: subtraction of functions? Share your drugs include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from kernel/bpf/hashtab.c:1409:9: sparse: sparse: context imbalance in '__htab_map_lookup_and_delete_batch' - different lock contexts for basic block -- >> kernel/bpf/btf.c:4671:13: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected unsigned int *__pu_addr @@ >> got unsigned int [noderef] __user * @@ kernel/bpf/btf.c:4671:13: sparse: expected unsigned int *__pu_addr >> kernel/bpf/btf.c:4671:13: sparse: got unsigned int [noderef] __user * include/linux/bpf_types.h:35:1: sparse: sparse: Initializer entry defined twice kernel/bpf/btf.c:3509:9: sparse: also defined here include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from arch/openrisc/include/asm/cmpxchg.h:69:29: sparse: sparse: shift too big (32) for type int -- kernel/bpf/cgroup.c:1402:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user *optlen @@ kernel/bpf/cgroup.c:1402:21: sparse: expected int const *__gu_addr kernel/bpf/cgroup.c:1402:21: sparse: got int [noderef] __user *optlen >> kernel/bpf/cgroup.c:1440:13: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected int *__pu_addr @@ got int >> [noderef] __user *optlen @@ kernel/bpf/cgroup.c:1440:13: sparse: expected int *__pu_addr kernel/bpf/cgroup.c:1440:13: sparse: got int [noderef] __user *optlen arch/openrisc/include/asm/cmpxchg.h:101:29: sparse: sparse: shift too big (32) for type int include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from -- >> drivers/spi/spidev.c:374:26: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected unsigned char *__pu_addr @@ >> got unsigned char [noderef] [usertype] __user * @@ drivers/spi/spidev.c:374:26: sparse: expected unsigned char *__pu_addr drivers/spi/spidev.c:374:26: sparse: got unsigned char [noderef] [usertype] __user * >> drivers/spi/spidev.c:378:26: sparse: sparse: incorrect type in initializer >> (different address spaces) @@ expected unsigned int *__pu_addr @@ >> got unsigned int [noderef] [usertype] __user * @@ drivers/spi/spidev.c:378:26: sparse: expected unsigned int *__pu_addr drivers/spi/spidev.c:378:26: sparse: got unsigned int [noderef] [usertype] __user * drivers/spi/spidev.c:382:26: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned char *__pu_addr @@ got unsigned char [noderef] [usertype] __user * @@ drivers/spi/spidev.c:382:26: sparse: expected unsigned char *__pu_addr drivers/spi/spidev.c:382:26: sparse: got unsigned char [noderef] [usertype] __user * drivers/spi/spidev.c:386:26: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned char *__pu_addr @@ got unsigned char [noderef] [usertype] __user * @@ drivers/spi/spidev.c:386:26: sparse: expected unsigned char *__pu_addr drivers/spi/spidev.c:386:26: sparse: got unsigned char [noderef] [usertype] __user * drivers/spi/spidev.c:389:26: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int *__pu_addr @@ got unsigned int [noderef] [usertype] __user * @@ drivers/spi/spidev.c:389:26: sparse: expected unsigned int *__pu_addr drivers/spi/spidev.c:389:26: sparse: got unsigned int [noderef] [usertype] __user * drivers/spi/spidev.c:396:34: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned char const *__gu_addr @@ got unsigned char [noderef] [usertype] __user * @@ drivers/spi/spidev.c:396:34: sparse: expected unsigned char const *__gu_addr drivers/spi/spidev.c:396:34: sparse: got unsigned char [noderef] [usertype] __user * drivers/spi/spidev.c:398:34: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int const *__gu_addr @@ got unsigned int [noderef] [usertype] __user * @@ drivers/spi/spidev.c:398:34: sparse: expected unsigned int const *__gu_addr drivers/spi/spidev.c:398:34: sparse: got unsigned int [noderef] [usertype] __user * drivers/spi/spidev.c:422:26: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned char const *__gu_addr @@ got unsigned char [noderef] [usertype] __user * @@ drivers/spi/spidev.c:422:26: sparse: expected unsigned char const *__gu_addr drivers/spi/spidev.c:422:26: sparse: got unsigned char [noderef] [usertype] __user * drivers/spi/spidev.c:439:26: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned char const *__gu_addr @@ got unsigned char [noderef] [usertype] __user * @@ drivers/spi/spidev.c:439:26: sparse: expected unsigned char const *__gu_addr drivers/spi/spidev.c:439:26: sparse: got unsigned char [noderef] [usertype] __user * drivers/spi/spidev.c:452:26: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int const *__gu_addr @@ got unsigned int [noderef] [usertype] __user * @@ drivers/spi/spidev.c:452:26: sparse: expected unsigned int const *__gu_addr drivers/spi/spidev.c:452:26: sparse: got unsigned int [noderef] [usertype] __user * include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from -- >> drivers/rtc/rtc-m41t80.c:731:24: sparse: sparse: incorrect type in >> initializer (different address spaces) @@ expected int *__pu_addr @@ >> got int [noderef] __user * @@ drivers/rtc/rtc-m41t80.c:731:24: sparse: expected int *__pu_addr >> drivers/rtc/rtc-m41t80.c:731:24: sparse: got int [noderef] __user * >> drivers/rtc/rtc-m41t80.c:736:21: sparse: sparse: incorrect type in >> initializer (different address spaces) @@ expected int const *__gu_addr >> @@ got int [noderef] __user * @@ drivers/rtc/rtc-m41t80.c:736:21: sparse: expected int const *__gu_addr drivers/rtc/rtc-m41t80.c:736:21: sparse: got int [noderef] __user * drivers/rtc/rtc-m41t80.c:745:24: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int *__pu_addr @@ got int [noderef] __user * @@ drivers/rtc/rtc-m41t80.c:745:24: sparse: expected int *__pu_addr drivers/rtc/rtc-m41t80.c:745:24: sparse: got int [noderef] __user * include/linux/uaccess.h:131:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *to @@ got void [noderef] __user *to @@ include/linux/uaccess.h:131:38: sparse: expected void *to include/linux/uaccess.h:131:38: sparse: got void [noderef] __user *to include/linux/uaccess.h:131:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void const *from @@ include/linux/uaccess.h:131:42: sparse: expected void const [noderef] __user *from include/linux/uaccess.h:131:42: sparse: got void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got void const [noderef] __user *from @@ arch/openrisc/include/asm/uaccess.h:246:55: sparse: expected void const *from arch/openrisc/include/asm/uaccess.h:246:55: sparse: got void const [noderef] __user *from -- drivers/usb/gadget/udc/mv_u3d_core.c:47:33: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le16 [usertype] wMaxPacketSize @@ got int @@ drivers/usb/gadget/udc/mv_u3d_core.c:47:33: sparse: expected restricted __le16 [usertype] wMaxPacketSize drivers/usb/gadget/udc/mv_u3d_core.c:47:33: sparse: got int drivers/usb/gadget/udc/mv_u3d_core.c:241:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] rsvd0 @@ got restricted __le32 [usertype] @@ drivers/usb/gadget/udc/mv_u3d_core.c:241:35: sparse: expected unsigned int [usertype] rsvd0 drivers/usb/gadget/udc/mv_u3d_core.c:241:35: sparse: got restricted __le32 [usertype] drivers/usb/gadget/udc/mv_u3d_core.c:247:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] trb_addr_lo @@ got restricted __le32 [usertype] @@ drivers/usb/gadget/udc/mv_u3d_core.c:247:41: sparse: expected unsigned int [usertype] trb_addr_lo drivers/usb/gadget/udc/mv_u3d_core.c:247:41: sparse: got restricted __le32 [usertype] drivers/usb/gadget/udc/mv_u3d_core.c:305:29: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] buf_addr_lo @@ got restricted __le32 [usertype] @@ drivers/usb/gadget/udc/mv_u3d_core.c:305:29: sparse: expected unsigned int [usertype] buf_addr_lo drivers/usb/gadget/udc/mv_u3d_core.c:305:29: sparse: got restricted __le32 [usertype] drivers/usb/gadget/udc/mv_u3d_core.c:307:25: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] trb_len @@ got restricted __le32 [usertype] @@ drivers/usb/gadget/udc/mv_u3d_core.c:307:25: sparse: expected unsigned int [usertype] trb_len drivers/usb/gadget/udc/mv_u3d_core.c:307:25: sparse: got restricted __le32 [usertype] drivers/usb/gadget/udc/mv_u3d_core.c:351:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] buf_addr_lo @@ got restricted __le32 [usertype] @@ drivers/usb/gadget/udc/mv_u3d_core.c:351:34: sparse: expected unsigned int [usertype] buf_addr_lo drivers/usb/gadget/udc/mv_u3d_core.c:351:34: sparse: got restricted __le32 [usertype] drivers/usb/gadget/udc/mv_u3d_core.c:353:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] trb_len @@ got restricted __le32 [usertype] @@ drivers/usb/gadget/udc/mv_u3d_core.c:353:30: sparse: expected unsigned int [usertype] trb_len drivers/usb/gadget/udc/mv_u3d_core.c:353:30: sparse: got restricted __le32 [usertype] drivers/usb/gadget/udc/mv_u3d_core.c:889:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem * @@ got unsigned int * @@ drivers/usb/gadget/udc/mv_u3d_core.c:889:42: sparse: expected void [noderef] __iomem * drivers/usb/gadget/udc/mv_u3d_core.c:889:42: sparse: got unsigned int * drivers/usb/gadget/udc/mv_u3d_core.c:1478:26: sparse: sparse: cast from restricted __le16 >> drivers/usb/gadget/udc/mv_u3d_core.c:1770:28: sparse: sparse: incorrect type >> in argument 1 (different address spaces) @@ expected void *addr @@ >> got struct mv_u3d_cap_regs [noderef] __iomem *cap_regs @@ drivers/usb/gadget/udc/mv_u3d_core.c:1770:28: sparse: expected void *addr >> drivers/usb/gadget/udc/mv_u3d_core.c:1770:28: sparse: got struct >> mv_u3d_cap_regs [noderef] __iomem *cap_regs drivers/usb/gadget/udc/mv_u3d_core.c:1981:20: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *addr @@ got struct mv_u3d_cap_regs [noderef] __iomem *cap_regs @@ drivers/usb/gadget/udc/mv_u3d_core.c:1981:20: sparse: expected void *addr drivers/usb/gadget/udc/mv_u3d_core.c:1981:20: sparse: got struct mv_u3d_cap_regs [noderef] __iomem *cap_regs vim +1384 kernel/bpf/syscall.c cb4d03ab499d4c Brian Vazquez 2020-01-15 1358 cb4d03ab499d4c Brian Vazquez 2020-01-15 1359 int generic_map_lookup_batch(struct bpf_map *map, cb4d03ab499d4c Brian Vazquez 2020-01-15 1360 const union bpf_attr *attr, cb4d03ab499d4c Brian Vazquez 2020-01-15 1361 union bpf_attr __user *uattr) cb4d03ab499d4c Brian Vazquez 2020-01-15 1362 { cb4d03ab499d4c Brian Vazquez 2020-01-15 1363 void __user *uobatch = u64_to_user_ptr(attr->batch.out_batch); cb4d03ab499d4c Brian Vazquez 2020-01-15 1364 void __user *ubatch = u64_to_user_ptr(attr->batch.in_batch); cb4d03ab499d4c Brian Vazquez 2020-01-15 1365 void __user *values = u64_to_user_ptr(attr->batch.values); cb4d03ab499d4c Brian Vazquez 2020-01-15 1366 void __user *keys = u64_to_user_ptr(attr->batch.keys); cb4d03ab499d4c Brian Vazquez 2020-01-15 1367 void *buf, *buf_prevkey, *prev_key, *key, *value; cb4d03ab499d4c Brian Vazquez 2020-01-15 1368 int err, retry = MAP_LOOKUP_RETRIES; cb4d03ab499d4c Brian Vazquez 2020-01-15 1369 u32 value_size, cp, max_count; cb4d03ab499d4c Brian Vazquez 2020-01-15 1370 cb4d03ab499d4c Brian Vazquez 2020-01-15 1371 if (attr->batch.elem_flags & ~BPF_F_LOCK) cb4d03ab499d4c Brian Vazquez 2020-01-15 1372 return -EINVAL; cb4d03ab499d4c Brian Vazquez 2020-01-15 1373 cb4d03ab499d4c Brian Vazquez 2020-01-15 1374 if ((attr->batch.elem_flags & BPF_F_LOCK) && cb4d03ab499d4c Brian Vazquez 2020-01-15 1375 !map_value_has_spin_lock(map)) cb4d03ab499d4c Brian Vazquez 2020-01-15 1376 return -EINVAL; cb4d03ab499d4c Brian Vazquez 2020-01-15 1377 cb4d03ab499d4c Brian Vazquez 2020-01-15 1378 value_size = bpf_map_value_size(map); cb4d03ab499d4c Brian Vazquez 2020-01-15 1379 cb4d03ab499d4c Brian Vazquez 2020-01-15 1380 max_count = attr->batch.count; cb4d03ab499d4c Brian Vazquez 2020-01-15 1381 if (!max_count) cb4d03ab499d4c Brian Vazquez 2020-01-15 1382 return 0; cb4d03ab499d4c Brian Vazquez 2020-01-15 1383 cb4d03ab499d4c Brian Vazquez 2020-01-15 @1384 if (put_user(0, &uattr->batch.count)) cb4d03ab499d4c Brian Vazquez 2020-01-15 1385 return -EFAULT; cb4d03ab499d4c Brian Vazquez 2020-01-15 1386 cb4d03ab499d4c Brian Vazquez 2020-01-15 1387 buf_prevkey = kmalloc(map->key_size, GFP_USER | __GFP_NOWARN); cb4d03ab499d4c Brian Vazquez 2020-01-15 1388 if (!buf_prevkey) cb4d03ab499d4c Brian Vazquez 2020-01-15 1389 return -ENOMEM; cb4d03ab499d4c Brian Vazquez 2020-01-15 1390 cb4d03ab499d4c Brian Vazquez 2020-01-15 1391 buf = kmalloc(map->key_size + value_size, GFP_USER | __GFP_NOWARN); cb4d03ab499d4c Brian Vazquez 2020-01-15 1392 if (!buf) { bb2359f4dbe98e Denis Efremov 2020-06-01 1393 kfree(buf_prevkey); cb4d03ab499d4c Brian Vazquez 2020-01-15 1394 return -ENOMEM; cb4d03ab499d4c Brian Vazquez 2020-01-15 1395 } cb4d03ab499d4c Brian Vazquez 2020-01-15 1396 cb4d03ab499d4c Brian Vazquez 2020-01-15 1397 err = -EFAULT; cb4d03ab499d4c Brian Vazquez 2020-01-15 1398 prev_key = NULL; cb4d03ab499d4c Brian Vazquez 2020-01-15 1399 if (ubatch && copy_from_user(buf_prevkey, ubatch, map->key_size)) cb4d03ab499d4c Brian Vazquez 2020-01-15 1400 goto free_buf; cb4d03ab499d4c Brian Vazquez 2020-01-15 1401 key = buf; cb4d03ab499d4c Brian Vazquez 2020-01-15 1402 value = key + map->key_size; cb4d03ab499d4c Brian Vazquez 2020-01-15 1403 if (ubatch) cb4d03ab499d4c Brian Vazquez 2020-01-15 1404 prev_key = buf_prevkey; cb4d03ab499d4c Brian Vazquez 2020-01-15 1405 cb4d03ab499d4c Brian Vazquez 2020-01-15 1406 for (cp = 0; cp < max_count;) { cb4d03ab499d4c Brian Vazquez 2020-01-15 1407 rcu_read_lock(); cb4d03ab499d4c Brian Vazquez 2020-01-15 1408 err = map->ops->map_get_next_key(map, prev_key, key); cb4d03ab499d4c Brian Vazquez 2020-01-15 1409 rcu_read_unlock(); cb4d03ab499d4c Brian Vazquez 2020-01-15 1410 if (err) cb4d03ab499d4c Brian Vazquez 2020-01-15 1411 break; cb4d03ab499d4c Brian Vazquez 2020-01-15 1412 err = bpf_map_copy_value(map, key, value, cb4d03ab499d4c Brian Vazquez 2020-01-15 1413 attr->batch.elem_flags); cb4d03ab499d4c Brian Vazquez 2020-01-15 1414 cb4d03ab499d4c Brian Vazquez 2020-01-15 1415 if (err == -ENOENT) { cb4d03ab499d4c Brian Vazquez 2020-01-15 1416 if (retry) { cb4d03ab499d4c Brian Vazquez 2020-01-15 1417 retry--; cb4d03ab499d4c Brian Vazquez 2020-01-15 1418 continue; cb4d03ab499d4c Brian Vazquez 2020-01-15 1419 } cb4d03ab499d4c Brian Vazquez 2020-01-15 1420 err = -EINTR; cb4d03ab499d4c Brian Vazquez 2020-01-15 1421 break; cb4d03ab499d4c Brian Vazquez 2020-01-15 1422 } cb4d03ab499d4c Brian Vazquez 2020-01-15 1423 cb4d03ab499d4c Brian Vazquez 2020-01-15 1424 if (err) cb4d03ab499d4c Brian Vazquez 2020-01-15 1425 goto free_buf; cb4d03ab499d4c Brian Vazquez 2020-01-15 1426 cb4d03ab499d4c Brian Vazquez 2020-01-15 1427 if (copy_to_user(keys + cp * map->key_size, key, cb4d03ab499d4c Brian Vazquez 2020-01-15 1428 map->key_size)) { cb4d03ab499d4c Brian Vazquez 2020-01-15 1429 err = -EFAULT; cb4d03ab499d4c Brian Vazquez 2020-01-15 1430 goto free_buf; cb4d03ab499d4c Brian Vazquez 2020-01-15 1431 } cb4d03ab499d4c Brian Vazquez 2020-01-15 1432 if (copy_to_user(values + cp * value_size, value, value_size)) { cb4d03ab499d4c Brian Vazquez 2020-01-15 1433 err = -EFAULT; cb4d03ab499d4c Brian Vazquez 2020-01-15 1434 goto free_buf; cb4d03ab499d4c Brian Vazquez 2020-01-15 1435 } cb4d03ab499d4c Brian Vazquez 2020-01-15 1436 cb4d03ab499d4c Brian Vazquez 2020-01-15 1437 if (!prev_key) cb4d03ab499d4c Brian Vazquez 2020-01-15 1438 prev_key = buf_prevkey; cb4d03ab499d4c Brian Vazquez 2020-01-15 1439 cb4d03ab499d4c Brian Vazquez 2020-01-15 1440 swap(prev_key, key); cb4d03ab499d4c Brian Vazquez 2020-01-15 1441 retry = MAP_LOOKUP_RETRIES; cb4d03ab499d4c Brian Vazquez 2020-01-15 1442 cp++; cb4d03ab499d4c Brian Vazquez 2020-01-15 1443 } cb4d03ab499d4c Brian Vazquez 2020-01-15 1444 cb4d03ab499d4c Brian Vazquez 2020-01-15 1445 if (err == -EFAULT) cb4d03ab499d4c Brian Vazquez 2020-01-15 1446 goto free_buf; cb4d03ab499d4c Brian Vazquez 2020-01-15 1447 cb4d03ab499d4c Brian Vazquez 2020-01-15 1448 if ((copy_to_user(&uattr->batch.count, &cp, sizeof(cp)) || cb4d03ab499d4c Brian Vazquez 2020-01-15 1449 (cp && copy_to_user(uobatch, prev_key, map->key_size)))) cb4d03ab499d4c Brian Vazquez 2020-01-15 1450 err = -EFAULT; cb4d03ab499d4c Brian Vazquez 2020-01-15 1451 cb4d03ab499d4c Brian Vazquez 2020-01-15 1452 free_buf: cb4d03ab499d4c Brian Vazquez 2020-01-15 1453 kfree(buf_prevkey); cb4d03ab499d4c Brian Vazquez 2020-01-15 1454 kfree(buf); cb4d03ab499d4c Brian Vazquez 2020-01-15 1455 return err; cb4d03ab499d4c Brian Vazquez 2020-01-15 1456 } cb4d03ab499d4c Brian Vazquez 2020-01-15 1457 :::::: The code at line 1384 was first introduced by commit :::::: cb4d03ab499d4c040f4ab6fd4389d2b49f42b5a5 bpf: Add generic support for lookup batch op :::::: TO: Brian Vazquez <bria...@google.com> :::::: CC: Alexei Starovoitov <a...@kernel.org> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip