aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/header.c
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung.kim@lge.com>2013-03-21 03:18:48 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-03-21 12:30:52 -0400
commit3dce2ce3cc40ece2562a5a83e879b4bfb451476c (patch)
treeb066d350c037448be3e4b33866caea190f4f00be /tools/perf/util/header.c
parent7f42b9505aee3fa9cb465a670989e3d426a1f3f2 (diff)
perf tools: Handle failure case in trace_report()
If pevent allocation in read_trace_init() fails, trace_report() will return -1 and *ppevent is set to NULL. Its callers should check this case and handle it properly. This is also a preparation for the removal of *die() calls. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Steven Rostedt <rostedt@goodmis.org> Link: http://lkml.kernel.org/r/1363850332-25297-6-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/header.c')
-rw-r--r--tools/perf/util/header.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 79e48c726938..326068a593a5 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -1670,8 +1670,8 @@ static int process_tracing_data(struct perf_file_section *section __maybe_unused
1670 struct perf_header *ph __maybe_unused, 1670 struct perf_header *ph __maybe_unused,
1671 int fd, void *data) 1671 int fd, void *data)
1672{ 1672{
1673 trace_report(fd, data, false); 1673 ssize_t ret = trace_report(fd, data, false);
1674 return 0; 1674 return ret < 0 ? -1 : 0;
1675} 1675}
1676 1676
1677static int process_build_id(struct perf_file_section *section, 1677static int process_build_id(struct perf_file_section *section,
@@ -2750,6 +2750,11 @@ static int perf_evsel__prepare_tracepoint_event(struct perf_evsel *evsel,
2750 if (evsel->tp_format) 2750 if (evsel->tp_format)
2751 return 0; 2751 return 0;
2752 2752
2753 if (pevent == NULL) {
2754 pr_debug("broken or missing trace data\n");
2755 return -1;
2756 }
2757
2753 event = pevent_find_event(pevent, evsel->attr.config); 2758 event = pevent_find_event(pevent, evsel->attr.config);
2754 if (event == NULL) 2759 if (event == NULL)
2755 return -1; 2760 return -1;