perf test: Fix cpus and thread maps reference in error path
authorJiri Olsa <jolsa@kernel.org>
Thu, 3 Dec 2015 08:34:15 +0000 (09:34 +0100)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 7 Dec 2015 21:12:55 +0000 (18:12 -0300)
In error path to try user space event, both cpus and threads map now
owned by evlist and freed by perf_evlist__set_maps call.  Getting
reference to keep them alive.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1449131658-1841-5-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/tests/code-reading.c

index 26182ffcea756dcc2312d4da57d2907228ecd019..313a48c6b2bc8e111e113e79c4a72fdc2d720ac5 100644 (file)
@@ -547,6 +547,13 @@ static int do_test_code_reading(bool try_kcore)
                if (ret < 0) {
                        if (!excl_kernel) {
                                excl_kernel = true;
+                               /*
+                                * Both cpus and threads are now owned by evlist
+                                * and will be freed by following perf_evlist__set_maps
+                                * call. Getting refference to keep them alive.
+                                */
+                               cpu_map__get(cpus);
+                               thread_map__get(threads);
                                perf_evlist__set_maps(evlist, NULL, NULL);
                                perf_evlist__delete(evlist);
                                evlist = NULL;