Message ID | 20211230072751.21622-1-linmq006@gmail.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | mtd: rawnand: ingenic: Fix missing put_device in ingenic_ecc_get | expand |
Hi, Le jeu., déc. 30 2021 at 07:27:51 +0000, Miaoqian Lin <linmq006@gmail.com> 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 <linmq006@gmail.com> Reviewed-by: Paul Cercueil <paul@crapouillou.net> 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 >
On Thu, 2021-12-30 at 07:27:51 UTC, Miaoqian Lin wrote: > 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 <linmq006@gmail.com> > Reviewed-by: Paul Cercueil <paul@crapouillou.net> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks. Miquel
miquel.raynal@bootlin.com wrote on Sun, 23 Jan 2022 16:23:32 +0100: > On Thu, 2021-12-30 at 07:27:51 UTC, Miaoqian Lin wrote: > > 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 <linmq006@gmail.com> > > Reviewed-by: Paul Cercueil <paul@crapouillou.net> > > Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks. Pushed on mtd/fixes, actually.
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);
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 <linmq006@gmail.com> --- drivers/mtd/nand/raw/ingenic/ingenic_ecc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)