perf probe: Fix memory leaks in add_perf_probe_events
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 2/2 perf probe: Fix memory leaks in add_perf_probe_events
Fix several memory leaks of pkgs and tevs in add_perf_probe_events().
Signed-off-by Masami Hiramatsu <[email protected]>
Reported-by Arnaldo Carvalho de Melo <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Ingo Molnar <[email protected]>
---
tools/perf/util/probe-event.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-)
tools/perf/util/probe-event.c +8 -3
@@ -1606,8 +1606,10 @@ int add_perf_probe_events(struct perf_probe_event *pevs, int npevs,/* Init vmlinux path */ ret =init_vmlinux (); -if (ret <0 ) +if (ret <0 ) { +free (pkgs);return ret; + }/* Loop 1: convert all events */ for (i =0 ; i < npevs; i++) {
@@ -1625,10 +1627,13 @@ int add_perf_probe_events(struct perf_probe_event *pevs, int npevs, ret =__add_probe_trace_events (pkgs[i].pev, pkgs[i].tevs, pkgs[i].ntevs, force_add); end: -/* Loop 3: cleanup trace events */ -for (i =0 ; i < npevs; i++) +/* Loop 3: cleanup and free trace events */ +for (i =0 ; i < npevs; i++) {for (j =0 ; j < pkgs[i].ntevs; j++)clear_probe_trace_event (&pkgs[i].tevs[j]); +free (pkgs[i].tevs); + } +free (pkgs);return ret; }
Signature · 4 lines
Masami HIRAMATSU 2nd Research Dept. Hitachi, Ltd., Systems Development Laboratory E-mail: [email protected]
Commit-ID: 449e5b247ca7c9dc9fc3391b7eebfefdeb2ce1fc Gitweb: http://git.kernel.org/tip/449e5b247ca7c9dc9fc3391b7eebfefdeb2ce1fc Author: Masami Hiramatsu <[email protected]> AuthorDate: Tue, 3 Aug 2010 11:11:40 +0900 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Fri, 6 Aug 2010 16:25:56 -0300
perf probe: Fix memory leaks in add_perf_probe_events
Fix several memory leaks of pkgs and tevs in add_perf_probe_events().
Reported-by Arnaldo Carvalho de Melo <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Ingo Molnar <[email protected]>
LKML-Reference: <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/util/probe-event.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-)
tools/perf/util/probe-event.c +8 -3
@@ -1606,8 +1606,10 @@ int add_perf_probe_events(struct perf_probe_event *pevs, int npevs,/* Init vmlinux path */ ret =init_vmlinux (); -if (ret <0 ) +if (ret <0 ) { +free (pkgs);return ret; + }/* Loop 1: convert all events */ for (i =0 ; i < npevs; i++) {
@@ -1625,10 +1627,13 @@ int add_perf_probe_events(struct perf_probe_event *pevs, int npevs, ret =__add_probe_trace_events (pkgs[i].pev, pkgs[i].tevs, pkgs[i].ntevs, force_add); end: -/* Loop 3: cleanup trace events */ -for (i =0 ; i < npevs; i++) +/* Loop 3: cleanup and free trace events */ +for (i =0 ; i < npevs; i++) {for (j =0 ; j < pkgs[i].ntevs; j++)clear_probe_trace_event (&pkgs[i].tevs[j]); +free (pkgs[i].tevs); + } +free (pkgs);return ret; }