From patchwork Thu Aug 20 17:21:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Dewar X-Patchwork-Id: 11726873 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4D0B214F6 for ; Thu, 20 Aug 2020 17:23:19 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2630520724 for ; Thu, 20 Aug 2020 17:23:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="X9fdzvpo"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AgPWAn6K" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2630520724 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=oWDIKsknm+1VxLjf3N+024mOeLc7kHmiDTScGGuaYmQ=; b=X9fdzvpo4TDM0VgEcxd5tS8fWd WO3vBUjPY+fPO1lD4ubApB2ZrtnVbKql1c7buxGCveY+coonR/LMImC9srON/VVO5qg3Fve3guIiH Z23APhmu7/gUUJ1lGGhXuCOtpPPipCpPLulShfl2OCaiCnhEqMSvsA3rFKYE/J2/txs0QyflDsONZ ccxYj36MZ32Qyr38s6gH6x2hNg3uBl848qQ2GmXmCnNM+l1MQ4Rk9TyLWrwCkG7R23U6qDPKLCzQG MqQVyNVc8NYeutV0A3myD5DrAO8MO2Hg62X13xxdVYYODJcYMav3huN/FX7pSVYEx5wVAKdmyIvHv dpc8jOjg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k8oFw-0000be-Nh; Thu, 20 Aug 2020 17:21:40 +0000 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k8oFt-0000bB-SP for linux-arm-kernel@lists.infradead.org; Thu, 20 Aug 2020 17:21:38 +0000 Received: by mail-wm1-x344.google.com with SMTP id x5so2320576wmi.2 for ; Thu, 20 Aug 2020 10:21:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=4uWUfvcvtlbQW5JFnpOK+hjAu8lWAyrOUrT32VpIiuI=; b=AgPWAn6KcYpaUgZNdnQDrZpEE4Ja69FANSIymzvKytxdV0F7ganAaAA5yN5fLc9+1g EwliSW76cTQxHDGzRgYdb6/BBrIeQyEK9MaHHmbZbE/QnYmY0sKuZcdtUflFjjWvrn2L e86YlAz7w7fZatTbnRQoh7CX0Z7jK1vgQifn/i27v+z1sYX1T17I5gLLwsTiW9qi0B5O oCrDynXkE8FKWL8sGlM9xB4SOomoCGJnz3+ueXC7KaFLx6Rg27aDWBhB10IsqPXgcJLo 7TR166fr4WSJK7DXxzs+7IkxABGHwvl6PfzSAP7MoY6Jr0Ts8RENSleRnPHygA+iK9Df nz0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=4uWUfvcvtlbQW5JFnpOK+hjAu8lWAyrOUrT32VpIiuI=; b=BXj1Y7NCjK06URRhuujNayot6q0Y4iD2SX/uAg5UYAk74H0ZD8NwHi0A8xAPMPT2b8 SwKZsyO4uXqiFVZ+TCQ5V5MUqdNTzkEOnSJFs3NBaDVWtfADEB5dGgL92ndsCL20tAqT RwKniiaZOPR6sqg2elJrndSMkYu0K38TSxmEdytsJMOJGvOa+qwxl9EVWHIwS6Yk1nML PGeWFjdnloUU3fBH9DLJ04TQ7lE94Hu9QM70eN9/212v41ZZAZmYTMsDNrjEFWTlAoBT GnMbwbwsQ3Bda063FM9eJbZb+VSqMjo0fb5t+7M8/DLZmOrfA6IpKivDV/5kumZS358K BsgA== X-Gm-Message-State: AOAM531Mjr3d04YUK0nJo93gT7IXwOuaCm6PHZa2XzmMf97zwakKGkuV UlVkTr2qmegdkYSRD2fHlVA= X-Google-Smtp-Source: ABdhPJyNwdvZcCBCsA4v68ZOL1cjBR2XTgTJ6IvFAFZq/BX6AHTjYvq48ZTwTZCPpp2kEu7bST60lA== X-Received: by 2002:a05:600c:202:: with SMTP id 2mr4173075wmi.147.1597944096808; Thu, 20 Aug 2020 10:21:36 -0700 (PDT) Received: from localhost.localdomain (cpc83661-brig20-2-0-cust443.3-3.cable.virginm.net. [82.28.105.188]) by smtp.gmail.com with ESMTPSA id y2sm5724061wmg.25.2020.08.20.10.21.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2020 10:21:36 -0700 (PDT) From: Alex Dewar To: Markus Mayer , bcm-kernel-feedback-list@broadcom.com, Krzysztof Kozlowski , Florian Fainelli , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] memory: brcmstb_dpfe: Fix memory leak Date: Thu, 20 Aug 2020 18:21:18 +0100 Message-Id: <20200820172118.781324-1-alex.dewar90@gmail.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200820_132137_946905_1D1E929C X-CRM114-Status: GOOD ( 14.13 ) X-Spam-Score: 0.1 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (0.1 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2a00:1450:4864:20:0:0:0:344 listed in] [list.dnswl.org] 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit [alex.dewar90[at]gmail.com] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [alex.dewar90[at]gmail.com] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alex Dewar Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org In brcmstb_dpfe_download_firmware(), memory is allocated to variable fw by firmware_request_nowarn(), but never released. Fix up to release fw on all return paths. Signed-off-by: Alex Dewar Acked-by: Markus Mayer Acked-by: Florian Fainelli --- v2: Don't assign ret unnecessarily (Krzysztof) --- drivers/memory/brcmstb_dpfe.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/memory/brcmstb_dpfe.c b/drivers/memory/brcmstb_dpfe.c index 60e8633b1175..e08528b12cbd 100644 --- a/drivers/memory/brcmstb_dpfe.c +++ b/drivers/memory/brcmstb_dpfe.c @@ -647,8 +647,10 @@ static int brcmstb_dpfe_download_firmware(struct brcmstb_dpfe_priv *priv) return (ret == -ENOENT) ? -EPROBE_DEFER : ret; ret = __verify_firmware(&init, fw); - if (ret) - return -EFAULT; + if (ret) { + ret = -EFAULT; + goto release_fw; + } __disable_dcpu(priv); @@ -667,18 +669,20 @@ static int brcmstb_dpfe_download_firmware(struct brcmstb_dpfe_priv *priv) ret = __write_firmware(priv->dmem, dmem, dmem_size, is_big_endian); if (ret) - return ret; + goto release_fw; ret = __write_firmware(priv->imem, imem, imem_size, is_big_endian); if (ret) - return ret; + goto release_fw; ret = __verify_fw_checksum(&init, priv, header, init.chksum); if (ret) - return ret; + goto release_fw; __enable_dcpu(priv); - return 0; +release_fw: + release_firmware(fw); + return ret; } static ssize_t generic_show(unsigned int command, u32 response[],