+++ /dev/null
-From foo@baz Wed Aug 22 10:28:26 CEST 2018
-From: Jiri Olsa <jolsa@kernel.org>
-Date: Mon, 11 Jun 2018 11:34:21 +0200
-Subject: perf tests: Add event parsing error handling to parse events test
-
-From: Jiri Olsa <jolsa@kernel.org>
-
-[ Upstream commit 933ccf2002aaef1037cb676622a694f5390c3d59 ]
-
-Add missing error handling for parse_events calls in test_event function
-that led to following segfault on s390:
-
- running test 52 'intel_pt//u'
- perf: Segmentation fault
- ...
- /lib64/libc.so.6(vasprintf+0xe6) [0x3fffca3f106]
- /lib64/libc.so.6(asprintf+0x46) [0x3fffca1aa96]
- ./perf(parse_events_add_pmu+0xb8) [0x80132088]
- ./perf(parse_events_parse+0xc62) [0x8019529a]
- ./perf(parse_events+0x98) [0x801341c0]
- ./perf(test__parse_events+0x48) [0x800cd140]
- ./perf(cmd_test+0x26a) [0x800bd44a]
- test child interrupted
-
-Adding the struct parse_events_error argument to parse_events call. Also
-adding parse_events_print_error to get more details on the parsing
-failures, like:
-
- # perf test 6 -v
- running test 52 'intel_pt//u'failed to parse event 'intel_pt//u', err 1, str 'Cannot find PMU `intel_pt'. Missing kernel support?'
- event syntax error: 'intel_pt//u'
- \___ Cannot find PMU `intel_pt'. Missing kernel support?
-
-Committer note:
-
-Use named initializers in the struct parse_events_error variable to
-avoid breaking the build on centos5, 6 and others with a similar gcc:
-
- cc1: warnings being treated as errors
- tests/parse-events.c: In function 'test_event':
- tests/parse-events.c:1696: error: missing initializer
- tests/parse-events.c:1696: error: (near initialization for 'err.str')
-
-Reported-by: Kim Phillips <kim.phillips@arm.com>
-Signed-off-by: Jiri Olsa <jolsa@kernel.org>
-Tested-by: Kim Phillips <kim.phillips@arm.com>
-Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
-Cc: David Ahern <dsahern@gmail.com>
-Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
-Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
-Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
-Cc: Namhyung Kim <namhyung@kernel.org>
-Cc: Peter Zijlstra <peterz@infradead.org>
-Cc: Thomas Richter <tmricht@linux.ibm.com>
-Link: http://lkml.kernel.org/r/20180611093422.1005-1-jolsa@kernel.org
-Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- tools/perf/tests/parse-events.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
---- a/tools/perf/tests/parse-events.c
-+++ b/tools/perf/tests/parse-events.c
-@@ -1614,6 +1614,7 @@ static struct terms_test test__terms[] =
-
- static int test_event(struct evlist_test *e)
- {
-+ struct parse_events_error err = { .idx = 0, };
- struct perf_evlist *evlist;
- int ret;
-
-@@ -1621,10 +1622,11 @@ static int test_event(struct evlist_test
- if (evlist == NULL)
- return -ENOMEM;
-
-- ret = parse_events(evlist, e->name, NULL);
-+ ret = parse_events(evlist, e->name, &err);
- if (ret) {
-- pr_debug("failed to parse event '%s', err %d\n",
-- e->name, ret);
-+ pr_debug("failed to parse event '%s', err %d, str '%s'\n",
-+ e->name, ret, err.str);
-+ parse_events_print_error(&err, e->name);
- } else {
- ret = e->check(evlist);
- }