Commit 11493f26 authored by Wen Yang's avatar Wen Yang Committed by Miquel Raynal

mtd: rawnand: jz4780: fix possible object reference leak

of_find_device_by_node() takes a reference to the struct device
when it finds a match via get_device, there is no need to call
get_device() twice.
We also should make sure to drop the reference to the device
taken by of_find_device_by_node() on driver unbind.

Fixes: ae02ab00 ("mtd: nand: jz4780: driver for NAND devices on JZ4780 SoCs")
Signed-off-by: default avatarWen Yang <yellowriver2010@hotmail.com>
Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
parent a12085d1
...@@ -281,12 +281,15 @@ static struct jz4780_bch *jz4780_bch_get(struct device_node *np) ...@@ -281,12 +281,15 @@ static struct jz4780_bch *jz4780_bch_get(struct device_node *np)
struct jz4780_bch *bch; struct jz4780_bch *bch;
pdev = of_find_device_by_node(np); pdev = of_find_device_by_node(np);
if (!pdev || !platform_get_drvdata(pdev)) if (!pdev)
return ERR_PTR(-EPROBE_DEFER); return ERR_PTR(-EPROBE_DEFER);
get_device(&pdev->dev);
bch = platform_get_drvdata(pdev); bch = platform_get_drvdata(pdev);
if (!bch) {
put_device(&pdev->dev);
return ERR_PTR(-EPROBE_DEFER);
}
clk_prepare_enable(bch->clk); clk_prepare_enable(bch->clk);
return bch; return bch;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment