On Mon, May 29, 2023 at 8:49 PM Jiri Olsa <olsajiri@xxxxxxxxx> wrote: > > On Sun, May 28, 2023 at 02:20:21PM +0000, Yafang Shao wrote: > > SNIP > > > diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c > > index 0d84a7a..00a0009 100644 > > --- a/kernel/trace/bpf_trace.c > > +++ b/kernel/trace/bpf_trace.c > > @@ -2564,10 +2564,41 @@ static void bpf_kprobe_multi_link_show_fdinfo(const struct bpf_link *link, > > } > > } > > > > +static int bpf_kprobe_multi_link_fill_link_info(const struct bpf_link *link, > > + struct bpf_link_info *info) > > +{ > > + struct bpf_kprobe_multi_link *kmulti_link; > > + u64 *uaddrs = u64_to_user_ptr(info->kprobe_multi.addrs); > > + u32 ucount = info->kprobe_multi.count; > > + int i; > > + > > + if (!uaddrs ^ !ucount) > > + return -EINVAL; > > + > > + kmulti_link = container_of(link, struct bpf_kprobe_multi_link, link); > > + if (!uaddrs) { > > + info->kprobe_multi.count = kmulti_link->cnt; > > + return 0; > > + } > > + > > + if (!ucount) > > + return 0; > > + > > + if (ucount != kmulti_link->cnt) > > + return -EINVAL; > > + > > + for (i = 0; i < ucount; i++) > > + if (copy_to_user(uaddrs + i, kmulti_link->addrs + i, > > + sizeof(u64))) > > + return -EFAULT; > > let's use put_user instead copy_to_user? or even better why not > copy that with single copy_to_user from kmulti_link->addrs > Good point. I will utilize a single copy_to_user instead. -- Regards Yafang