diff options
author | Namhyung Kim <namhyung.kim@lge.com> | 2012-02-28 10:19:38 +0900 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2012-02-28 09:52:54 +0100 |
commit | 30ce2f7eef095d1b8d070740f1948629814fe3c7 (patch) | |
tree | 8fc423281dc55f09463e20c279f5b4200ad9e383 /kernel/events/hw_breakpoint.c | |
parent | 5ffca28a4ac7abb8a254fafe6bd03b2f83667df7 (diff) | |
download | op-kernel-dev-30ce2f7eef095d1b8d070740f1948629814fe3c7.zip op-kernel-dev-30ce2f7eef095d1b8d070740f1948629814fe3c7.tar.gz |
perf/hwbp: Fix a possible memory leak
If kzalloc() for TYPE_DATA failed on a given cpu, previous chunk
of TYPE_INST will be leaked. Fix it.
Thanks to Peter Zijlstra for suggesting this better solution. It
should work as long as the initial value of the region is all
0's and that's the case of static (per-cpu) memory allocation.
Signed-off-by: Namhyung Kim <namhyung.kim@lge.com>
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Link: http://lkml.kernel.org/r/1330391978-28070-1-git-send-email-namhyung.kim@lge.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/events/hw_breakpoint.c')
-rw-r--r-- | kernel/events/hw_breakpoint.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/events/hw_breakpoint.c b/kernel/events/hw_breakpoint.c index b7971d6..ee706ce 100644 --- a/kernel/events/hw_breakpoint.c +++ b/kernel/events/hw_breakpoint.c @@ -651,10 +651,10 @@ int __init init_hw_breakpoint(void) err_alloc: for_each_possible_cpu(err_cpu) { - if (err_cpu == cpu) - break; for (i = 0; i < TYPE_MAX; i++) kfree(per_cpu(nr_task_bp_pinned[i], cpu)); + if (err_cpu == cpu) + break; } return -ENOMEM; |