aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-report.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2011-02-11 09:09:54 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2011-02-11 09:09:54 -0500
commit0849327d13a0bd7f6512b7c21f4b3e79efb2076d (patch)
tree2a63d79f17dff257b8ac160f0138bdb00f6e4747 /tools/perf/builtin-report.c
parent7c940c18c57e45910f7dd9a4011c4658cacba4b6 (diff)
perf report: Fix initializion of annotate symbol priv area
We only allocate it when in TUI mode. In --stdio mode unconditionally initializing this area leads to memory corruption. Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Cc: Tom Zanussi <tzanussi@gmail.com> LKML-Reference: <new-submission> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-report.c')
-rw-r--r--tools/perf/builtin-report.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index f403aced4cba..f9a99a1ce609 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -44,6 +44,7 @@ static const char default_pretty_printing_style[] = "normal";
44static const char *pretty_printing_style = default_pretty_printing_style; 44static const char *pretty_printing_style = default_pretty_printing_style;
45 45
46static char callchain_default_opt[] = "fractal,0.5"; 46static char callchain_default_opt[] = "fractal,0.5";
47static symbol_filter_t annotate_init;
47 48
48static struct hists *perf_session__hists_findnew(struct perf_session *self, 49static struct hists *perf_session__hists_findnew(struct perf_session *self,
49 u64 event_stream, u32 type, 50 u64 event_stream, u32 type,
@@ -167,7 +168,7 @@ static int process_sample_event(union perf_event *event,
167 struct perf_event_attr *attr; 168 struct perf_event_attr *attr;
168 169
169 if (perf_event__preprocess_sample(event, session, &al, sample, 170 if (perf_event__preprocess_sample(event, session, &al, sample,
170 symbol__annotate_init) < 0) { 171 annotate_init) < 0) {
171 fprintf(stderr, "problem processing %d event, skipping it.\n", 172 fprintf(stderr, "problem processing %d event, skipping it.\n",
172 event->header.type); 173 event->header.type);
173 return -1; 174 return -1;
@@ -520,6 +521,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __used)
520 */ 521 */
521 if (use_browser > 0) { 522 if (use_browser > 0) {
522 symbol_conf.priv_size = sizeof(struct annotation); 523 symbol_conf.priv_size = sizeof(struct annotation);
524 annotate_init = symbol__annotate_init;
523 /* 525 /*
524 * For searching by name on the "Browse map details". 526 * For searching by name on the "Browse map details".
525 * providing it only in verbose mode not to bloat too 527 * providing it only in verbose mode not to bloat too