On Mon, 3 Jul 2017 09:09:28 -0400 Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: > Masami and Sabrina, > > I backported the patch to 4.11 as below. The one thing that changed > here is that Linus's tree doesn't fail on return probes if the > parameter is not a symbol. I didn't want to backport that to stable, so > I modified the patch to retain that failure for return probes when an > address is used. > > Can you ack this patch and we can then have this be the backport for > stable? Looks good to me. Acked-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx> Thank you! > > -- Steve > > diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c > index 49cdda8..f0e99394 100644 > --- a/kernel/trace/trace_kprobe.c > +++ b/kernel/trace/trace_kprobe.c > @@ -680,30 +680,25 @@ static int create_trace_kprobe(int argc, char **argv) > pr_info("Probe point is not specified.\n"); > return -EINVAL; > } > - if (isdigit(argv[1][0])) { > - if (is_return) { > - pr_info("Return probe point must be a symbol.\n"); > - return -EINVAL; > - } > - /* an address specified */ > - ret = kstrtoul(&argv[1][0], 0, (unsigned long *)&addr); > - if (ret) { > - pr_info("Failed to parse address.\n"); > - return ret; > - } > - } else { > + > + /* try to parse an address. if that fails, try to read the > + * input as a symbol. */ > + if (kstrtoul(argv[1], 0, (unsigned long *)&addr)) { > /* a symbol specified */ > symbol = argv[1]; > /* TODO: support .init module functions */ > ret = traceprobe_split_symbol_offset(symbol, &offset); > if (ret) { > - pr_info("Failed to parse symbol.\n"); > + pr_info("Failed to parse either an address or a symbol.\n"); > return ret; > } > if (offset && is_return) { > pr_info("Return probe must be used without offset.\n"); > return -EINVAL; > } > + } else if (is_return) { > + pr_info("Return probe point must be a symbol.\n"); > + return -EINVAL; > } > argc -= 2; argv += 2; > -- Masami Hiramatsu <mhiramat@xxxxxxxxxx>