summaryrefslogtreecommitdiffstats
path: root/tools/perf/util/machine.c
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung@kernel.org>2014-11-18 13:30:28 +0900
committerArnaldo Carvalho de Melo <acme@redhat.com>2014-11-24 18:03:48 -0300
commit330dfa224fcc8594977785a6493ca06d124f0cfe (patch)
tree8a4eb078bf0eb523cdf857f0eb829c8d5903de44 /tools/perf/util/machine.c
parent85c116a6cb91a5c09b7a6c95ffc6a6cbd32cd237 (diff)
downloadlinux-330dfa224fcc8594977785a6493ca06d124f0cfe.tar.gz
linux-330dfa224fcc8594977785a6493ca06d124f0cfe.tar.bz2
linux-330dfa224fcc8594977785a6493ca06d124f0cfe.zip
perf tools: Fix segfault due to invalid kernel dso access
Jiri reported that the commit 96d78059d6d9 ("perf tools: Make vmlinux short name more like kallsyms short name") segfaults on perf script. When processing kernel mmap event, it should access the 'kernel' variable as sometimes it cannot find a matching dso from build-id table so 'dso' might be invalid. Reported-by: Jiri Olsa <jolsa@redhat.com> Tested-by: Jiri Olsa <jolsa@redhat.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung.kim@lge.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1416285028-30572-1-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/machine.c')
-rw-r--r--tools/perf/util/machine.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index d97309c87bd6..b75b487574c7 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -1106,8 +1106,8 @@ static int machine__process_kernel_mmap_event(struct machine *machine,
if (__machine__create_kernel_maps(machine, kernel) < 0)
goto out_problem;
- if (strstr(dso->long_name, "vmlinux"))
- dso__set_short_name(dso, "[kernel.vmlinux]", false);
+ if (strstr(kernel->long_name, "vmlinux"))
+ dso__set_short_name(kernel, "[kernel.vmlinux]", false);
machine__set_kernel_mmap_len(machine, event);