Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp1420290pxa; Thu, 20 Aug 2020 10:47:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxBE//Py5TrnhWBazN4MXLOeA9d5MI/5pp1jJUBlnKrRiBknvACYGy19NAcH5TvNSJA4qkB X-Received: by 2002:a17:906:a1d7:: with SMTP id bx23mr4491045ejb.273.1597945674098; Thu, 20 Aug 2020 10:47:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597945674; cv=none; d=google.com; s=arc-20160816; b=ZtYXyH9eOHRj8SL93A9fC8OUOLogZUDiU7yKPEWonO9GIAFJwNx6u6I43grXoDlw4X ah8eccsgCHubBRfLvx+P+uezd16XjonMfTTvbMy/rSkvpPjxKCK+oGxJZVLnZ/jCT1OP 8m7dijpbCK6qqb0AKtwsUmgaEaWfIsApOSOhmu2xIOBpnRcGXcsadc2If/XE8ZubEy+L NFBNVrGyWqvU2vSWm73Nl45Yl6EjPWcI3QZ64/NzP2bgWL1fYScTE5pdKPkIemOGhBgY iF/3ROUr6Kj4USohsc0fyZSgNoCl2Yh62NvGhuDw1QWPAXerYUKJ7uzLAzmWNDrKrDk7 U8Iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=FU6En4qmUD/ctr2fUy1I8lCvKwxV26SbLYN3IPmoL2U=; b=o0A+oF1jENMsF2baBdOLlnrxXslvVkbH78D5GaKXyqxDDyhuNAZ3CBJZVOpDOQ3yQt rblCZ+SZIt9DTCYc4LM6YDlXU4ZrvbxcYdFGIMqOoI5MNFW2aXwbnua42UE4fkaojU36 ZV89uG34Q8HsHNygCPFeSUYgDTF7EGGXtih8Dxhw0mrTiv8Vdrc4fKK6PwH9QYl95702 pN0QGZX0ndmQPLEGyneSf/n4lsAAazxCauDBAdg0Ojh3ZO0TnZRb6G/PIC2NJbYgSo+4 9J0sMHnfFDYIpEEsTU2ZT+Khb2AljI8y0km/4LlljUuQpp6YpTtNtEMUH2ofKuW8Ph09 jEgg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@broadcom.com header.s=google header.b=QwF4Uq6J; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u6si1629919ejf.569.2020.08.20.10.47.30; Thu, 20 Aug 2020 10:47:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@broadcom.com header.s=google header.b=QwF4Uq6J; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726969AbgHTRoa (ORCPT + 99 others); Thu, 20 Aug 2020 13:44:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48856 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725977AbgHTRo2 (ORCPT ); Thu, 20 Aug 2020 13:44:28 -0400 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B57CEC061385 for ; Thu, 20 Aug 2020 10:44:27 -0700 (PDT) Received: by mail-ej1-x643.google.com with SMTP id qc22so3525472ejb.4 for ; Thu, 20 Aug 2020 10:44:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=FU6En4qmUD/ctr2fUy1I8lCvKwxV26SbLYN3IPmoL2U=; b=QwF4Uq6J4cmVOnKjgQDO/Gh3pml1zUPeAoraxo2RNrIbPPRDvep+UY2dX7pO441H1D btJSyb48CH82FjuGDC9p1aH5Cm7BK5CZY+W1kkP9RlBPQgkeC/WgxLlD6gWHDZvQPW2j ovQO4XQ2YXedgC/iD4BZsVdsZ33tDEwygryjg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=FU6En4qmUD/ctr2fUy1I8lCvKwxV26SbLYN3IPmoL2U=; b=Y1bzAy2PajojbZobnXjWU5WzJmOPrlGK5BCBMbbO+W3JvTvnkPmJPHFu8Zs2d83s+X HG4kfBcq64nPQdoyZznqNyPZGTrvAhUbRlvp1zP+So0XX0b8EQRiEblubdvspmBX7xuC ZhI2l+fzBSWN72cqgAQ/DzxpdzUV9rHHh4sJaRLj67CCLFmkia0/9rMIdcc7SiPzLje8 qkcVbiKRt7ZLVQrSqK4UjV1HSrFEWwJPq0BmafMfMLYQZtVT4k4QsON3O9ah8DJErfyD /AeO9qyQneRj5uTwCOEK/1ymWtQjt6+Q0u20afz6a5wUDyw19Ldf72nCpkq9OBv5xHtm JtYg== X-Gm-Message-State: AOAM532KAJENnf//wvTBVPh2sZkEOORbW4Dn4W5YKlXlCoBfB5VqPXbw jeY0+NZZ4ikj1MawFYtwRSF7ZJnIYj5tdc/P6qR66g== X-Received: by 2002:a17:906:8748:: with SMTP id hj8mr4482012ejb.477.1597945466273; Thu, 20 Aug 2020 10:44:26 -0700 (PDT) MIME-Version: 1.0 References: <20200820172118.781324-1-alex.dewar90@gmail.com> In-Reply-To: <20200820172118.781324-1-alex.dewar90@gmail.com> From: Markus Mayer Date: Thu, 20 Aug 2020 10:44:15 -0700 Message-ID: Subject: Re: [PATCH v2] memory: brcmstb_dpfe: Fix memory leak To: Alex Dewar Cc: BCM Kernel Feedback , Krzysztof Kozlowski , Florian Fainelli , Linux ARM Kernel , Linux Kernel Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 20 Aug 2020 at 10:21, Alex Dewar wrote: > > 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. Thanks for the fix! Acked-by: Markus Mayer > Signed-off-by: Alex Dewar > --- > 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[], > -- > 2.28.0 >