forked from Minki/linux
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 <acme@redhat.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> Cc: Ingo Molnar <mingo@elte.hu> Cc: linux-kernel@vger.kernel.org LKML-Reference: <4C577ADC.1000309@hitachi.com> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
58432e1f36
commit
449e5b247c
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user