Commit cc2d86b0 authored by Stephane Eranian's avatar Stephane Eranian Committed by Arnaldo Carvalho de Melo

perf evlist: Fix missing event name init for default event

When no event is given to perf record, perf top, a default event is
initialized (cycles). However, perf_evlist__add_default() was not
setting the symbolic name for the event. Perf top worked simply because
it was reconstructing the name from the event code. But it should not
have to do this. This patch initializes the evsel->name field properly.

This second version improves the code flow on the non error path.

Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20110607161936.GA8163@quadSigned-off-by: default avatarStephane Eranian <eranian@google.com>
[committer note: Use perf_evsel__delete() instead of plain free()]
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 77e57297
...@@ -85,10 +85,19 @@ int perf_evlist__add_default(struct perf_evlist *evlist) ...@@ -85,10 +85,19 @@ int perf_evlist__add_default(struct perf_evlist *evlist)
struct perf_evsel *evsel = perf_evsel__new(&attr, 0); struct perf_evsel *evsel = perf_evsel__new(&attr, 0);
if (evsel == NULL) if (evsel == NULL)
return -ENOMEM; goto error;
/* use strdup() because free(evsel) assumes name is allocated */
evsel->name = strdup("cycles");
if (!evsel->name)
goto error_free;
perf_evlist__add(evlist, evsel); perf_evlist__add(evlist, evsel);
return 0; return 0;
error_free:
perf_evsel__delete(evsel);
error:
return -ENOMEM;
} }
void perf_evlist__disable(struct perf_evlist *evlist) void perf_evlist__disable(struct perf_evlist *evlist)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment