summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2013-11-11 16:28:42 -0300
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-11-11 16:28:42 -0300
commitd0b849e9bced36cf279881294c07c43b0b9dce86 (patch)
tree4b2bf2f8f94f2807bdb05e8485413d8be5132a49
parenta9986fad6645b98d5bb3c2f83c22efb0761ca272 (diff)
downloadlinux-d0b849e9bced36cf279881294c07c43b0b9dce86.tar.gz
linux-d0b849e9bced36cf279881294c07c43b0b9dce86.tar.bz2
linux-d0b849e9bced36cf279881294c07c43b0b9dce86.zip
perf tests: Check return of perf_evlist__open sw clock event period test
We were not checking if we successfully opened the counters, i.e. if sys_perf_event_open worked, when it doesn't in this test, we were continuing anyway and then segfaulting when trying to access the file descriptor array, that at that point had been freed in perf_evlist__open error path: [root@ssdandy ~]# perf test -v 19 19: Test software clock events have valid period values : --- start --- Segmentation fault (core dumped) [root@ssdandy ~]# Do the check and bail out instead. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-6qy8ljkn0e9hm7bh7keo5z68@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/perf/tests/sw-clock.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/tools/perf/tests/sw-clock.c b/tools/perf/tests/sw-clock.c
index 73c5c37cb27b..ed777728dfe7 100644
--- a/tools/perf/tests/sw-clock.c
+++ b/tools/perf/tests/sw-clock.c
@@ -57,7 +57,11 @@ static int __test__sw_clock_freq(enum perf_sw_ids clock_id)
goto out_delete_maps;
}
- perf_evlist__open(evlist);
+ if (perf_evlist__open(evlist)) {
+ err = -errno;
+ pr_debug("Couldn't open evlist: %s\n", strerror(errno));
+ goto out_delete_maps;
+ }
err = perf_evlist__mmap(evlist, 128, true);
if (err < 0) {