Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754568AbbEORHP (ORCPT ); Fri, 15 May 2015 13:07:15 -0400 Received: from foss.arm.com ([217.140.101.70]:42658 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753362AbbEORHN (ORCPT ); Fri, 15 May 2015 13:07:13 -0400 Date: Fri, 15 May 2015 18:07:07 +0100 From: Mark Rutland To: Shailendra Verma Cc: Will Deacon , Russell King , Peter Zijlstra , Paul Mackerras , Ingo Molnar , Arnaldo Carvalho de Melo , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" Subject: Re: [PATCH 10/10] arm: perf: Fix memory leak when probing PMU PPIs Message-ID: <20150515170707.GE23652@leverpostej> References: <1431704514-4204-1-git-send-email-shailendra.capricorn@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1431704514-4204-1-git-send-email-shailendra.capricorn@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1991 Lines: 54 On Fri, May 15, 2015 at 04:41:54PM +0100, Shailendra Verma wrote: > Commit 338d9dd3e2ae ("ARM: 8351/1: perf: don't warn about missing > interrupt-affinity property for PPIs") added a check for PPIs so that > we avoid parsing the interrupt-affinity property for these naturally > affine interrupts. > > Unfortunately, this check can trigger an early (successful) return and > we will leak the irqs array. This patch fixes the issue by reordering > the code so that the check is performed before any independent > allocation. > > Signed-off-by: Shailendra Verma > --- > 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; > + Will Deacon posted a patch for this a few days ago [1], and it's allready in Russell's patch system as 8357/1. Thanks, Mark. [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-May/342367.html [2] http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=8357/1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/