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-tinyconfig
(
https://download.01.org/0day-ci/archive/20211123/202111231840.JTkqlqKw-lk...)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
#
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 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
kernel/uaccess-buffer.c: In function '__uaccess_buffer_syscall_entry':
> kernel/uaccess-buffer.c:105:16: warning: cast to pointer from
integer of different size [-Wint-to-pointer-cast]
105 | buf->ubegin =
(struct uaccess_buffer_entry __user *)desc.addr;
| ^
kernel/uaccess-buffer.c: In function '__uaccess_buffer_syscall_exit':
> kernel/uaccess-buffer.c:117:14: warning: cast from pointer to
integer of different size [-Wpointer-to-int-cast]
117 | desc.addr =
(u64)(buf->ubegin + num_entries);
| ^
> kernel/uaccess-buffer.c:122:9: warning: ignoring return value of
'copy_to_user', declared with attribute warn_unused_result [-Wunused-result]
122 | (void)copy_to_user(buf->desc_ptr, &desc, sizeof(desc));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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);
e050ed271bb000 Peter Collingbourne 2021-11-22 118 desc.size = buf->kend -
buf->kcur;
e050ed271bb000 Peter Collingbourne 2021-11-22 119 buf->kcur = 0;
e050ed271bb000 Peter Collingbourne 2021-11-22 120 if (copy_to_user(buf->ubegin,
buf->kbegin,
e050ed271bb000 Peter Collingbourne 2021-11-22 121 num_entries * sizeof(struct
uaccess_buffer_entry)) == 0)
e050ed271bb000 Peter Collingbourne 2021-11-22 @122 (void)copy_to_user(buf->desc_ptr,
&desc, sizeof(desc));
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org