[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <tip-a3af66f51bd0bca72881ead4bf2bd19cb366582b@git.kernel.org>
Date: Tue, 26 Jun 2018 00:00:22 -0700
From: tip-bot for Ravi Bangoria <tipbot@...or.com>
To: linux-tip-commits@...r.kernel.org
Cc: dsahern@...il.com, tglx@...utronix.de,
linux-kernel@...r.kernel.org, ravi.bangoria@...ux.ibm.com,
acme@...hat.com, ak@...ux.intel.com,
alexander.shishkin@...ux.intel.com, yao.jin@...ux.intel.com,
namhyung@...nel.org, davidcc@...gle.com, hpa@...or.com,
mingo@...nel.org, jolsa@...hat.com
Subject: [tip:perf/urgent] perf script: Fix crash because of missing
evsel->priv
Commit-ID: a3af66f51bd0bca72881ead4bf2bd19cb366582b
Gitweb: https://git.kernel.org/tip/a3af66f51bd0bca72881ead4bf2bd19cb366582b
Author: Ravi Bangoria <ravi.bangoria@...ux.ibm.com>
AuthorDate: Mon, 25 Jun 2018 18:12:19 +0530
Committer: Arnaldo Carvalho de Melo <acme@...hat.com>
CommitDate: Mon, 25 Jun 2018 11:59:37 -0300
perf script: Fix crash because of missing evsel->priv
'perf script' in piped mode is crashing because evsel->priv is not set
properly. Fix it.
Before:
# perf record -o - -- ls | perf script
<SNIP 'ls' output>
Segmentation fault (core dumped)
#
After:
# perf record -o - -- ls | perf script
<SNIP 'ls' output>
ls 2282 1031.731974: 250000 cpu-clock:uhH: 7effe4b3d29e
ls 2282 1031.732222: 250000 cpu-clock:uhH: 7effe4b3a650
#
Signed-off-by: Ravi Bangoria <ravi.bangoria@...ux.ibm.com>
Tested-by: Arnaldo Carvalho de Melo <acme@...hat.com>
Cc: Alexander Shishkin <alexander.shishkin@...ux.intel.com>
Cc: Andi Kleen <ak@...ux.intel.com>
Cc: David Ahern <dsahern@...il.com>
Cc: David Carrillo-Cisneros <davidcc@...gle.com>
Cc: Jin Yao <yao.jin@...ux.intel.com>
Cc: Jiri Olsa <jolsa@...hat.com>
Cc: Namhyung Kim <namhyung@...nel.org>
Fixes: a14390fde64e ("perf script: Allow creating per-event dump files")
Link: http://lkml.kernel.org/r/20180625124220.6434-3-ravi.bangoria@linux.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@...hat.com>
---
tools/perf/builtin-script.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index f3fefbcc4503..ad2ac1300420 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -1834,6 +1834,7 @@ static int process_attr(struct perf_tool *tool, union perf_event *event,
struct perf_evlist *evlist;
struct perf_evsel *evsel, *pos;
int err;
+ static struct perf_evsel_script *es;
err = perf_event__process_attr(tool, event, pevlist);
if (err)
@@ -1842,6 +1843,19 @@ static int process_attr(struct perf_tool *tool, union perf_event *event,
evlist = *pevlist;
evsel = perf_evlist__last(*pevlist);
+ if (!evsel->priv) {
+ if (scr->per_event_dump) {
+ evsel->priv = perf_evsel_script__new(evsel,
+ scr->session->data);
+ } else {
+ es = zalloc(sizeof(*es));
+ if (!es)
+ return -ENOMEM;
+ es->fp = stdout;
+ evsel->priv = es;
+ }
+ }
+
if (evsel->attr.type >= PERF_TYPE_MAX &&
evsel->attr.type != PERF_TYPE_SYNTH)
return 0;
Powered by blists - more mailing lists