perf machine: Fix leak of 'struct thread' on error path
authorAdrian Hunter <adrian.hunter@intel.com>
Wed, 16 Jul 2014 07:19:44 +0000 (10:19 +0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 17 Jul 2014 13:34:07 +0000 (10:34 -0300)
__machine__findnew_thread() creates a 'struct thread' but does not free
it on the error path. Fix it.

Signed-off-by: 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: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1405495184-20441-3-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/machine.c

index 5484fa4..93c8b6f 100644 (file)
@@ -370,8 +370,10 @@ static struct thread *__machine__findnew_thread(struct machine *machine,
                 * within thread__init_map_groups to find the thread
                 * leader and that would screwed the rb tree.
                 */
-               if (thread__init_map_groups(th, machine))
+               if (thread__init_map_groups(th, machine)) {
+                       thread__delete(th);
                        return NULL;
+               }
        }
 
        return th;