* [PATCH] perf: fix missing event name init for default event (v2)
@ 2011-06-07 16:19 Stephane Eranian
2011-07-23 2:10 ` [PATCH]: perf: fix error handling of unknown events Stephane Eranian
2011-08-18 20:10 ` [tip:perf/core] perf evlist: Fix missing event name init for default event tip-bot for Stephane Eranian
0 siblings, 2 replies; 4+ messages in thread
From: Stephane Eranian @ 2011-06-07 16:19 UTC (permalink / raw)
To: linux-kernel; +Cc: mingo, peterz, acme
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.
Signed-off-by: Stephane Eranian <eranian@google.com>
---
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index b021ea9..9a98c28 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -85,10 +85,19 @@ int perf_evlist__add_default(struct perf_evlist *evlist)
struct perf_evsel *evsel = perf_evsel__new(&attr, 0);
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);
return 0;
+error_free:
+ free(evsel);
+error:
+ return -ENOMEM;
}
int perf_evlist__alloc_pollfd(struct perf_evlist *evlist)
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH]: perf: fix error handling of unknown events
2011-06-07 16:19 [PATCH] perf: fix missing event name init for default event (v2) Stephane Eranian
@ 2011-07-23 2:10 ` Stephane Eranian
2011-08-18 20:11 ` [tip:perf/core] perf tools: Fix " tip-bot for Stephane Eranian
2011-08-18 20:10 ` [tip:perf/core] perf evlist: Fix missing event name init for default event tip-bot for Stephane Eranian
1 sibling, 1 reply; 4+ messages in thread
From: Stephane Eranian @ 2011-07-23 2:10 UTC (permalink / raw)
To: linux-kernel; +Cc: peterz, acme, mingo
There was a problem with the parse_events() code not
printing the correct event name when an event was unknown
and starting with an 'r'. The source of the problem was
the way raw notation was parsed.
Without the patch:
$ perf stat -e retired_foo
invalid event modifier: 'tired_foo'
With the patch:
$ perf stat -e retired_foo
invalid or unsupported event: 'retired_foo'
This also covers the case where the name of the event was
not printed at all when perf was linked with libpfm4.
Signed-off-by: Stephane Eranian <eranian@google.com>
---
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 4ea7e19..8c1cb10 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -697,7 +697,11 @@ parse_raw_event(const char **strp, struct perf_event_attr *attr)
return EVT_FAILED;
n = hex2u64(str + 1, &config);
if (n > 0) {
- *strp = str + n + 1;
+ const char *end = str + n + 1;
+ if (*end != '\0' && *end != ',' && *end != ':')
+ return EVT_FAILED;
+
+ *strp = end;
attr->type = PERF_TYPE_RAW;
attr->config = config;
return EVT_HANDLED;
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [tip:perf/core] perf evlist: Fix missing event name init for default event
2011-06-07 16:19 [PATCH] perf: fix missing event name init for default event (v2) Stephane Eranian
2011-07-23 2:10 ` [PATCH]: perf: fix error handling of unknown events Stephane Eranian
@ 2011-08-18 20:10 ` tip-bot for Stephane Eranian
1 sibling, 0 replies; 4+ messages in thread
From: tip-bot for Stephane Eranian @ 2011-08-18 20:10 UTC (permalink / raw)
To: linux-tip-commits
Cc: acme, linux-kernel, eranian, hpa, mingo, peterz, tglx, mingo
Commit-ID: cc2d86b04d9ac28a6be6cb05da6ea8f014fd5aa0
Gitweb: http://git.kernel.org/tip/cc2d86b04d9ac28a6be6cb05da6ea8f014fd5aa0
Author: Stephane Eranian <eranian@google.com>
AuthorDate: Tue, 7 Jun 2011 18:19:36 +0200
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 18 Aug 2011 07:20:31 -0300
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@quad
Signed-off-by: Stephane Eranian <eranian@google.com>
[committer note: Use perf_evsel__delete() instead of plain free()]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/evlist.c | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index e03e7bc..c12bd47 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -85,10 +85,19 @@ int perf_evlist__add_default(struct perf_evlist *evlist)
struct perf_evsel *evsel = perf_evsel__new(&attr, 0);
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);
return 0;
+error_free:
+ perf_evsel__delete(evsel);
+error:
+ return -ENOMEM;
}
void perf_evlist__disable(struct perf_evlist *evlist)
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [tip:perf/core] perf tools: Fix error handling of unknown events
2011-07-23 2:10 ` [PATCH]: perf: fix error handling of unknown events Stephane Eranian
@ 2011-08-18 20:11 ` tip-bot for Stephane Eranian
0 siblings, 0 replies; 4+ messages in thread
From: tip-bot for Stephane Eranian @ 2011-08-18 20:11 UTC (permalink / raw)
To: linux-tip-commits
Cc: acme, linux-kernel, eranian, hpa, mingo, peterz, tglx, mingo
Commit-ID: 777d1d71db622a5e1ff703495741c3d257b532e5
Gitweb: http://git.kernel.org/tip/777d1d71db622a5e1ff703495741c3d257b532e5
Author: Stephane Eranian <eranian@google.com>
AuthorDate: Sat, 23 Jul 2011 04:10:43 +0200
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 18 Aug 2011 07:21:13 -0300
perf tools: Fix error handling of unknown events
There was a problem with the parse_events() code not printing the
correct event name when an event was unknown and starting with an 'r'.
The source of the problem was the way raw notation was parsed.
Without the patch:
$ perf stat -e retired_foo
invalid event modifier: 'tired_foo'
With the patch:
$ perf stat -e retired_foo
invalid or unsupported event: 'retired_foo'
This also covers the case where the name of the event was not printed at
all when perf was linked with libpfm4.
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20110723021043.GA20178@quad
Signed-off-by: Stephane Eranian <eranian@google.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/parse-events.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index d93f3ce..928918b 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -697,7 +697,11 @@ parse_raw_event(const char **strp, struct perf_event_attr *attr)
return EVT_FAILED;
n = hex2u64(str + 1, &config);
if (n > 0) {
- *strp = str + n + 1;
+ const char *end = str + n + 1;
+ if (*end != '\0' && *end != ',' && *end != ':')
+ return EVT_FAILED;
+
+ *strp = end;
attr->type = PERF_TYPE_RAW;
attr->config = config;
return EVT_HANDLED;
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-08-18 20:11 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-07 16:19 [PATCH] perf: fix missing event name init for default event (v2) Stephane Eranian
2011-07-23 2:10 ` [PATCH]: perf: fix error handling of unknown events Stephane Eranian
2011-08-18 20:11 ` [tip:perf/core] perf tools: Fix " tip-bot for Stephane Eranian
2011-08-18 20:10 ` [tip:perf/core] perf evlist: Fix missing event name init for default event tip-bot for Stephane Eranian
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox