Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 409FFC433FE for ; Mon, 3 Jan 2022 11:32:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233034AbiACLcO convert rfc822-to-8bit (ORCPT ); Mon, 3 Jan 2022 06:32:14 -0500 Received: from aposti.net ([89.234.176.197]:56640 "EHLO aposti.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231569AbiACLcM (ORCPT ); Mon, 3 Jan 2022 06:32:12 -0500 Date: Mon, 03 Jan 2022 11:32:02 +0000 From: Paul Cercueil Subject: Re: [PATCH] mtd: rawnand: ingenic: Fix missing put_device in ingenic_ecc_get To: Miaoqian Lin Cc: Harvey Hunt , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , linux-mips@vger.kernel.org, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Message-Id: In-Reply-To: <20211230072751.21622-1-linmq006@gmail.com> References: <20211230072751.21622-1-linmq006@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Le jeu., d?c. 30 2021 at 07:27:51 +0000, Miaoqian Lin a ?crit : > If of_find_device_by_node() succeeds, ingenic_ecc_get() doesn't have > a corresponding put_device(). Thus add put_device() to fix the > exception > handling. > > Fixes: 15de8c6 ("mtd: rawnand: ingenic: Separate top-level and SoC > specific code") > Signed-off-by: Miaoqian Lin Reviewed-by: Paul Cercueil Cheers, -Paul > --- > drivers/mtd/nand/raw/ingenic/ingenic_ecc.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/mtd/nand/raw/ingenic/ingenic_ecc.c > b/drivers/mtd/nand/raw/ingenic/ingenic_ecc.c > index efe0ffe4f1ab..9054559e52dd 100644 > --- a/drivers/mtd/nand/raw/ingenic/ingenic_ecc.c > +++ b/drivers/mtd/nand/raw/ingenic/ingenic_ecc.c > @@ -68,9 +68,14 @@ static struct ingenic_ecc *ingenic_ecc_get(struct > device_node *np) > struct ingenic_ecc *ecc; > > pdev = of_find_device_by_node(np); > - if (!pdev || !platform_get_drvdata(pdev)) > + if (!pdev) > return ERR_PTR(-EPROBE_DEFER); > > + if (!platform_get_drvdata(pdev)) { > + put_device(&pdev->dev); > + return ERR_PTR(-EPROBE_DEFER); > + } > + > ecc = platform_get_drvdata(pdev); > clk_prepare_enable(ecc->clk); > > -- > 2.17.1 >