Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -281,12 +281,15 @@ static struct jz4780_bch *jz4780_bch_get(struct device_node *np)
	struct jz4780_bch *bch;

	pdev = of_find_device_by_node(np);
	if (!pdev || !platform_get_drvdata(pdev))
	if (!pdev)
		return ERR_PTR(-EPROBE_DEFER);

	get_device(&pdev->dev);

	bch = platform_get_drvdata(pdev);
	if (!bch) {
		put_device(&pdev->dev);
		return ERR_PTR(-EPROBE_DEFER);
	}

	clk_prepare_enable(bch->clk);

	return bch;