summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung.kim@lge.com>2013-11-18 11:20:44 +0900
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-11-19 10:34:05 -0300
commit50a2740b839ece03b305facd3fc07cdc3b74247c (patch)
treee2cf5e2c68c5504d7ee3e03a7a1c52017fafc835
parent210e812f036736aeda097d9a6ef84b1f2b334bae (diff)
downloadlinux-50a2740b839ece03b305facd3fc07cdc3b74247c.tar.gz
linux-50a2740b839ece03b305facd3fc07cdc3b74247c.tar.bz2
linux-50a2740b839ece03b305facd3fc07cdc3b74247c.zip
perf header: Fix possible memory leaks in process_group_desc()
After processing all group descriptors or encountering an error, it frees all descriptors. However, current logic can leak memory since it might not traverse all descriptors. Note that the 'i' can have different value than nr_groups when an error occurred and it's safe to call free(desc[i].name) for every desc since we already make it NULL when it's reused for group names. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1384741244-7271-2-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/perf/util/header.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 559c516f1cec..1cd035708931 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -2107,7 +2107,7 @@ static int process_group_desc(struct perf_file_section *section __maybe_unused,
ret = 0;
out_free:
- while ((int) --i >= 0)
+ for (i = 0; i < nr_groups; i++)
free(desc[i].name);
free(desc);