perf probe: Fix error reported when offset without function
authorWang Nan <wangnan0@huawei.com>
Wed, 26 Aug 2015 10:57:44 +0000 (10:57 +0000)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 26 Aug 2015 13:40:34 +0000 (10:40 -0300)
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.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1440586666-235233-6-git-send-email-wangnan0@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/probe-event.c

index 926bcecc4a449fc5dd5921ae30b516d4e3b20bb9..eaacb58b9b3637d4b145c233b548720394a584d3 100644 (file)
@@ -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;