Hi Peter,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on tip/sched/core]
[also build test WARNING on bpf-next/master bpf/master linus/master v5.16-rc2]
[cannot apply to arm64/for-next/core arm-perf/for-next/perf tip/core/entry next-20211123]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url:
https://github.com/0day-ci/linux/commits/Peter-Collingbourne/kernel-intro...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
cb0e52b7748737b2cf6481fdd9b920ce7e1ebbdf
config: i386-randconfig-s002-20211123
(
https://download.01.org/0day-ci/archive/20211124/202111240910.4cK6zCbO-lk...)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
#
https://github.com/0day-ci/linux/commit/7cd6f102201f3ea35eea1b990f7543e89...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Peter-Collingbourne/kernel-introduce-uaccess-logging/20211123-131922
git checkout 7cd6f102201f3ea35eea1b990f7543e890b7fdbb
# save the config file to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir
ARCH=i386 SHELL=/bin/bash
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 >>)
kernel/uaccess-buffer.c:32:29: sparse: sparse: Using plain integer as NULL pointer
kernel/uaccess-buffer.c:72:31: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/uaccess-buffer.c:72:31: sparse: expected struct spinlock [usertype] *lock
kernel/uaccess-buffer.c:72:31: sparse: got struct spinlock [noderef] __rcu *
kernel/uaccess-buffer.c:75:33: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/uaccess-buffer.c:75:33: sparse: expected struct spinlock [usertype] *lock
kernel/uaccess-buffer.c:75:33: sparse: got struct spinlock [noderef] __rcu *
kernel/uaccess-buffer.c:83:29: sparse: sparse: Using plain integer as NULL pointer
kernel/uaccess-buffer.c:94:13: sparse: sparse: Using plain integer as NULL pointer
kernel/uaccess-buffer.c:117:22: sparse: sparse: cast removes address space
'__user' of expression
kernel/uaccess-buffer.c:119:21: sparse: sparse: Using plain integer as NULL pointer
> kernel/uaccess-buffer.c:105:65: sparse: sparse: non
size-preserving integer to pointer cast
> kernel/uaccess-buffer.c:117:39: sparse: sparse: non size-preserving pointer to
integer cast
vim +105 kernel/uaccess-buffer.c
e050ed271bb000 Peter Collingbourne 2021-11-22 87
e050ed271bb000 Peter Collingbourne 2021-11-22 88 void
__uaccess_buffer_syscall_entry(void)
e050ed271bb000 Peter Collingbourne 2021-11-22 89 {
e050ed271bb000 Peter Collingbourne 2021-11-22 90 struct uaccess_buffer_info *buf =
¤t->uaccess_buffer;
e050ed271bb000 Peter Collingbourne 2021-11-22 91 struct uaccess_descriptor desc;
e050ed271bb000 Peter Collingbourne 2021-11-22 92
e050ed271bb000 Peter Collingbourne 2021-11-22 93 if (get_user(buf->desc_ptr,
buf->desc_ptr_ptr) || !buf->desc_ptr ||
e050ed271bb000 Peter Collingbourne 2021-11-22 94 put_user(0, buf->desc_ptr_ptr)
||
e050ed271bb000 Peter Collingbourne 2021-11-22 95 copy_from_user(&desc,
buf->desc_ptr, sizeof(desc)))
e050ed271bb000 Peter Collingbourne 2021-11-22 96 return;
e050ed271bb000 Peter Collingbourne 2021-11-22 97
e050ed271bb000 Peter Collingbourne 2021-11-22 98 if (desc.size > 1024)
e050ed271bb000 Peter Collingbourne 2021-11-22 99 desc.size = 1024;
e050ed271bb000 Peter Collingbourne 2021-11-22 100
e050ed271bb000 Peter Collingbourne 2021-11-22 101 buf->kbegin = kmalloc_array(
e050ed271bb000 Peter Collingbourne 2021-11-22 102 desc.size, sizeof(struct
uaccess_buffer_entry), GFP_KERNEL);
e050ed271bb000 Peter Collingbourne 2021-11-22 103 buf->kcur = buf->kbegin;
e050ed271bb000 Peter Collingbourne 2021-11-22 104 buf->kend = buf->kbegin +
desc.size;
e050ed271bb000 Peter Collingbourne 2021-11-22 @105 buf->ubegin = (struct
uaccess_buffer_entry __user *)desc.addr;
e050ed271bb000 Peter Collingbourne 2021-11-22 106 }
e050ed271bb000 Peter Collingbourne 2021-11-22 107
e050ed271bb000 Peter Collingbourne 2021-11-22 108 void
__uaccess_buffer_syscall_exit(void)
e050ed271bb000 Peter Collingbourne 2021-11-22 109 {
e050ed271bb000 Peter Collingbourne 2021-11-22 110 struct uaccess_buffer_info *buf =
¤t->uaccess_buffer;
e050ed271bb000 Peter Collingbourne 2021-11-22 111 u64 num_entries = buf->kcur -
buf->kbegin;
e050ed271bb000 Peter Collingbourne 2021-11-22 112 struct uaccess_descriptor desc;
e050ed271bb000 Peter Collingbourne 2021-11-22 113
e050ed271bb000 Peter Collingbourne 2021-11-22 114 if (!buf->kcur)
e050ed271bb000 Peter Collingbourne 2021-11-22 115 return;
e050ed271bb000 Peter Collingbourne 2021-11-22 116
e050ed271bb000 Peter Collingbourne 2021-11-22 @117 desc.addr = (u64)(buf->ubegin +
num_entries);
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org