RE: [PATCH v3 4/6] perf probe: Fix error reported when offset without function

From: åæéå / HIRAMATUïMASAMI
Date: Wed Aug 26 2015 - 08:21:48 EST


> From: Wang Nan [mailto:wangnan0@xxxxxxxxxx]
>
> This patch fixes a bug that, when offset is provided but function is
> lost, parse_perf_probe_point() will give a "" string as function name,
> so the checking code at the end of parse_perf_probe_point() become useless.
> For example:
>
> # perf probe +0x1234
> Failed to find symbol in kernel
> Error: Failed to add events.
>
> After this patch:
>
> # perf probe +0x1234
> Semantic error :Offset requires an entry function.
> Error: Command Parse Error.

OK, seems sane now :)

Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@xxxxxxxxxxx>

Thanks!

>
> Signed-off-by: Wang Nan <wangnan0@xxxxxxxxxx>
> Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: Masami Hiramatsu <masami.hiramatsu.pt@xxxxxxxxxxx>
> Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
> Cc: Steven Rostedt <rostedt@xxxxxxxxxxx>
> ---
> tools/perf/util/probe-event.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
> index 926bcec..eaacb58 100644
> --- a/tools/perf/util/probe-event.c
> +++ b/tools/perf/util/probe-event.c
> @@ -1194,9 +1194,13 @@ static int parse_perf_probe_point(char *arg, struct perf_probe_event *pev)
> *ptr++ = '\0';
> }
>
> - tmp = strdup(arg);
> - if (tmp == NULL)
> - return -ENOMEM;
> + if (arg[0] == '\0')
> + tmp = NULL;
> + else {
> + tmp = strdup(arg);
> + if (tmp == NULL)
> + return -ENOMEM;
> + }
>
> if (file_spec)
> pp->file = tmp;
> --
> 1.8.3.4