Messages in this thread Patch in this message | | | From | Colin King <> | Subject | [PATCH][V3] ARM: pmu: fix memory leak due to early return not freeing irqs | Date | Mon, 18 May 2015 13:57:53 +0100 |
| |
From: Colin Ian King <colin.king@canonical.com>
Recent commit 338d9dd3e2ae ("ARM: 8351/1: perf: don't warn about missing interrupt-affinity property for PPIs") introduced a memory leak of irqs on the "Don't bother with PPIs" return path. This issue was picked up by static analysis by cppcheck:
[arch/arm/kernel/perf_event_cpu.c:315]: (error) Memory leak: irqs
Instead, perform allocation of irqs after getting the irq hence removing need to clean up an allocation on the PPI affine return path.
Fixes: 338d9dd3e2ae ("ARM: 8351/1: perf: don't warn about missing interrupt-affinity property for PPIs") Signed-off-by: Colin Ian King <colin.king@canonical.com> --- arch/arm/kernel/perf_event_cpu.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/arm/kernel/perf_event_cpu.c b/arch/arm/kernel/perf_event_cpu.c index 213919b..a7099ee 100644 --- a/arch/arm/kernel/perf_event_cpu.c +++ b/arch/arm/kernel/perf_event_cpu.c @@ -303,17 +303,17 @@ static int probe_current_pmu(struct arm_pmu *pmu) static int of_pmu_irq_cfg(struct platform_device *pdev) { - int i, irq; - int *irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL); - - if (!irqs) - return -ENOMEM; + int i, irq, *irqs; /* Don't bother with PPIs; they're already affine */ irq = platform_get_irq(pdev, 0); if (irq >= 0 && irq_is_percpu(irq)) return 0; + irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL); + if (!irqs) + return -ENOMEM; + for (i = 0; i < pdev->num_resources; ++i) { struct device_node *dn; int cpu; -- 2.1.4
| |