perf evlist: Fix for double free in tools/perf stat
authorYasser Shalabi <yassershalabi@gmail.com>
Sat, 4 Oct 2014 15:37:57 +0000 (11:37 -0400)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 15 Oct 2014 19:16:53 +0000 (16:16 -0300)
Fix for double free bug in tools/perf due to dangling thread_map pointer
in perf_evlist struct.

Code path excercised when perf stat -C switch is used but not set and is
followed by another switch.

Example:

  perf stat -C -e.

Signed-off-by: Yasser Shalabi <yassershalabi@gmail.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1412437077-13109-1-git-send-email-yassershalabi@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/evlist.c

index b4b54d84e9b05c9d1ce2c01f71a84f17552f753d..3c9e77d6b4c2bf97b863d3ff75e2cc8f88a68e04 100644 (file)
@@ -1003,6 +1003,7 @@ int perf_evlist__create_maps(struct perf_evlist *evlist, struct target *target)
 
 out_delete_threads:
        thread_map__delete(evlist->threads);
+       evlist->threads = NULL;
        return -1;
 }