tree:
https://git.kernel.org/pub/scm/linux/kernel/git/melver/linux.git
review/uaccess-logging
head: b0aa74824d0cd2fca9a45f5328b355949217f721
commit: 8ebb2cf0597b5485d0e3aa745fb79d9495ac9b97 [4/6] uaccess-buffer: add
CONFIG_GENERIC_ENTRY support
config: i386-randconfig-s031-20211207
(
https://download.01.org/0day-ci/archive/20211210/202112100515.6IGZbs7H-lk...)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
#
https://git.kernel.org/pub/scm/linux/kernel/git/melver/linux.git/commit/?...
git remote add melver
https://git.kernel.org/pub/scm/linux/kernel/git/melver/linux.git
git fetch --no-tags melver review/uaccess-logging
git checkout 8ebb2cf0597b5485d0e3aa745fb79d9495ac9b97
# save the config file to linux build tree
mkdir build_dir
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:62: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:62:31:
sparse: expected struct spinlock [usertype] *lock
kernel/uaccess-buffer.c:62:31: sparse: got struct spinlock [noderef] __rcu *
kernel/uaccess-buffer.c:65: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:65:33: sparse: expected struct spinlock [usertype] *lock
kernel/uaccess-buffer.c:65:33: sparse: got struct spinlock [noderef] __rcu *
> kernel/uaccess-buffer.c:83:13: sparse: sparse: Using plain
integer as NULL pointer
vim +62 kernel/uaccess-buffer.c
b3442207580a7a Peter Collingbourne 2021-12-07 59
b3442207580a7a Peter Collingbourne 2021-12-07 60 void
__uaccess_buffer_post_exit_loop(void)
b3442207580a7a Peter Collingbourne 2021-12-07 61 {
b3442207580a7a Peter Collingbourne 2021-12-07 @62
spin_lock_irq(¤t->sighand->siglock);
b3442207580a7a Peter Collingbourne 2021-12-07 63 current->blocked =
current->real_blocked;
b3442207580a7a Peter Collingbourne 2021-12-07 64 recalc_sigpending();
b3442207580a7a Peter Collingbourne 2021-12-07 65
spin_unlock_irq(¤t->sighand->siglock);
b3442207580a7a Peter Collingbourne 2021-12-07 66 }
b3442207580a7a Peter Collingbourne 2021-12-07 67
b3442207580a7a Peter Collingbourne 2021-12-07 68 void uaccess_buffer_free(struct
task_struct *tsk)
b3442207580a7a Peter Collingbourne 2021-12-07 69 {
b3442207580a7a Peter Collingbourne 2021-12-07 70 struct uaccess_buffer_info *buf =
&tsk->uaccess_buffer;
b3442207580a7a Peter Collingbourne 2021-12-07 71
b3442207580a7a Peter Collingbourne 2021-12-07 72 kfree(buf->kbegin);
b3442207580a7a Peter Collingbourne 2021-12-07 73
clear_syscall_work(UACCESS_BUFFER_EXIT);
b3442207580a7a Peter Collingbourne 2021-12-07 74 buf->kbegin = buf->kcur =
buf->kend = NULL;
b3442207580a7a Peter Collingbourne 2021-12-07 75 }
b3442207580a7a Peter Collingbourne 2021-12-07 76
b3442207580a7a Peter Collingbourne 2021-12-07 77 void
__uaccess_buffer_syscall_entry(void)
b3442207580a7a Peter Collingbourne 2021-12-07 78 {
b3442207580a7a Peter Collingbourne 2021-12-07 79 struct uaccess_buffer_info *buf =
¤t->uaccess_buffer;
b3442207580a7a Peter Collingbourne 2021-12-07 80 struct uaccess_descriptor desc;
b3442207580a7a Peter Collingbourne 2021-12-07 81
b3442207580a7a Peter Collingbourne 2021-12-07 82 if (get_user(buf->desc_ptr,
buf->desc_ptr_ptr) || !buf->desc_ptr ||
b3442207580a7a Peter Collingbourne 2021-12-07 @83 put_user(0, buf->desc_ptr_ptr)
||
b3442207580a7a Peter Collingbourne 2021-12-07 84 copy_from_user(&desc,
buf->desc_ptr, sizeof(desc)))
b3442207580a7a Peter Collingbourne 2021-12-07 85 return;
b3442207580a7a Peter Collingbourne 2021-12-07 86
b3442207580a7a Peter Collingbourne 2021-12-07 87 if (desc.size > 1024)
b3442207580a7a Peter Collingbourne 2021-12-07 88 desc.size = 1024;
b3442207580a7a Peter Collingbourne 2021-12-07 89
b3442207580a7a Peter Collingbourne 2021-12-07 90 if (buf->kend - buf->kbegin !=
desc.size)
b3442207580a7a Peter Collingbourne 2021-12-07 91 buf->kbegin =
b3442207580a7a Peter Collingbourne 2021-12-07 92 krealloc_array(buf->kbegin,
desc.size,
b3442207580a7a Peter Collingbourne 2021-12-07 93 sizeof(struct
uaccess_buffer_entry),
b3442207580a7a Peter Collingbourne 2021-12-07 94 GFP_KERNEL);
b3442207580a7a Peter Collingbourne 2021-12-07 95 if (!buf->kbegin)
b3442207580a7a Peter Collingbourne 2021-12-07 96 return;
b3442207580a7a Peter Collingbourne 2021-12-07 97
b3442207580a7a Peter Collingbourne 2021-12-07 98
set_syscall_work(UACCESS_BUFFER_EXIT);
b3442207580a7a Peter Collingbourne 2021-12-07 99 buf->kcur = buf->kbegin;
b3442207580a7a Peter Collingbourne 2021-12-07 100 buf->kend = buf->kbegin +
desc.size;
b3442207580a7a Peter Collingbourne 2021-12-07 101 buf->ubegin =
b3442207580a7a Peter Collingbourne 2021-12-07 102 (struct uaccess_buffer_entry __user
*)(unsigned long)desc.addr;
b3442207580a7a Peter Collingbourne 2021-12-07 103 }
b3442207580a7a Peter Collingbourne 2021-12-07 104
:::::: The code at line 62 was first introduced by commit
:::::: b3442207580a7ad112ed80ebff4f516282979c3b uaccess-buffer: add core code
:::::: TO: Peter Collingbourne <pcc(a)google.com>
:::::: CC: Marco Elver <elver(a)google.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org