On Mon, Mar 07, 2022 at 05:23:34PM -0800, Andrii Nakryiko wrote: > On Sun, Mar 6, 2022 at 9:28 AM Jiri Olsa <olsajiri@xxxxxxxxx> wrote: > > > > On Fri, Mar 04, 2022 at 03:11:01PM -0800, Andrii Nakryiko wrote: > > > > SNIP > > > > > > +static int > > > > +kprobe_multi_resolve_syms(const void *usyms, u32 cnt, > > > > + unsigned long *addrs) > > > > +{ > > > > + unsigned long addr, size; > > > > + const char **syms; > > > > + int err = -ENOMEM; > > > > + unsigned int i; > > > > + char *func; > > > > + > > > > + size = cnt * sizeof(*syms); > > > > + syms = kvzalloc(size, GFP_KERNEL); > > > > + if (!syms) > > > > + return -ENOMEM; > > > > + > > > > + func = kmalloc(KSYM_NAME_LEN, GFP_KERNEL); > > > > + if (!func) > > > > + goto error; > > > > + > > > > + if (copy_from_user(syms, usyms, size)) { > > > > + err = -EFAULT; > > > > + goto error; > > > > + } > > > > + > > > > + for (i = 0; i < cnt; i++) { > > > > + err = strncpy_from_user(func, syms[i], KSYM_NAME_LEN); > > > > + if (err == KSYM_NAME_LEN) > > > > + err = -E2BIG; > > > > + if (err < 0) > > > > + goto error; > > > > + > > > > + err = -EINVAL; > > > > + if (func[0] == '\0') > > > > + goto error; > > > > > > wouldn't empty string be handled by kallsyms_lookup_name? > > > > it would scan and compare all symbols with empty string, > > so it's better to test for it > > I don't mind, but it seems like kallsyms_lookup_name() should be made > smarter than that instead, no? true, I'll do that jirka