On Sat, Jun 3, 2023 at 2:38 PM kernel test robot <lkp@xxxxxxxxx> wrote: > > Hi Yafang, > > kernel test robot noticed the following build warnings: > > [auto build test WARNING on bpf-next/master] > > url: https://github.com/intel-lab-lkp/linux/commits/Yafang-Shao/bpf-Support-fill_link_info-for-kprobe_multi/20230602-165455 > base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master > patch link: https://lore.kernel.org/r/20230602085239.91138-2-laoar.shao%40gmail.com > patch subject: [PATCH bpf-next 1/6] bpf: Support ->fill_link_info for kprobe_multi > config: i386-randconfig-s002-20230601 (https://download.01.org/0day-ci/archive/20230603/202306031438.0X2HPFQl-lkp@xxxxxxxxx/config) > compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 > reproduce: > # apt-get install sparse > # sparse version: v0.6.4-39-gce1a6720-dirty > # https://github.com/intel-lab-lkp/linux/commit/270f3eb6c142f1f0ec7d800b8ecaab1b101682a0 > git remote add linux-review https://github.com/intel-lab-lkp/linux > git fetch --no-tags linux-review Yafang-Shao/bpf-Support-fill_link_info-for-kprobe_multi/20230602-165455 > git checkout 270f3eb6c142f1f0ec7d800b8ecaab1b101682a0 > # save the config file > mkdir build_dir && cp config build_dir/.config > make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 olddefconfig > make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash kernel/trace/ > > If you fix the issue, kindly add following tag where applicable > | Reported-by: kernel test robot <lkp@xxxxxxxxx> > | Closes: https://lore.kernel.org/oe-kbuild-all/202306031438.0X2HPFQl-lkp@xxxxxxxxx/ > > sparse warnings: (new ones prefixed by >>) > >> kernel/trace/bpf_trace.c:2554:24: sparse: sparse: cast removes address space '__user' of expression > >> kernel/trace/bpf_trace.c:2571:26: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] __user *to @@ got unsigned long long [usertype] *uaddrs @@ > kernel/trace/bpf_trace.c:2571:26: sparse: expected void [noderef] __user *to > kernel/trace/bpf_trace.c:2571:26: sparse: got unsigned long long [usertype] *uaddrs > kernel/trace/bpf_trace.c:2492:21: sparse: sparse: dereference of noderef expression > kernel/trace/bpf_trace.c:2496:66: sparse: sparse: dereference of noderef expression > > vim +/__user +2554 kernel/trace/bpf_trace.c > > 2550 > 2551 static int bpf_kprobe_multi_link_fill_link_info(const struct bpf_link *link, > 2552 struct bpf_link_info *info) > 2553 { > > 2554 u64 *uaddrs = (u64 *)u64_to_user_ptr(info->kprobe_multi.addrs); Thanks for the report. Will fix it. > 2555 struct bpf_kprobe_multi_link *kmulti_link; > 2556 u32 ucount = info->kprobe_multi.count; > 2557 > 2558 if (!uaddrs ^ !ucount) > 2559 return -EINVAL; > 2560 > 2561 kmulti_link = container_of(link, struct bpf_kprobe_multi_link, link); > 2562 if (!uaddrs) { > 2563 info->kprobe_multi.count = kmulti_link->cnt; > 2564 return 0; > 2565 } > 2566 > 2567 if (!ucount) > 2568 return 0; > 2569 if (ucount != kmulti_link->cnt) > 2570 return -EINVAL; > > 2571 if (copy_to_user(uaddrs, kmulti_link->addrs, ucount * sizeof(u64))) > 2572 return -EFAULT; > 2573 return 0; > 2574 } > 2575 > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests/wiki -- Regards Yafang