mtd: rawnand: oxnas: Unregister all devices on error
commitb60391eb17
upstream. On error, the oxnas probe path just frees the device which failed and aborts the probe, leaving unreleased resources. Fix this situation by calling mtd_device_unregister()/nand_cleanup() on these. Fixes:6685924924
("mtd: nand: Add OX820 NAND Support") Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-38-miquel.raynal@bootlin.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
4682749ce3
commit
f8a2658d0f
|
@ -82,6 +82,7 @@ static int oxnas_nand_probe(struct platform_device *pdev)
|
|||
struct resource *res;
|
||||
int count = 0;
|
||||
int err = 0;
|
||||
int i;
|
||||
|
||||
/* Allocate memory for the device structure (and zero it) */
|
||||
oxnas = devm_kzalloc(&pdev->dev, sizeof(*oxnas),
|
||||
|
@ -161,6 +162,13 @@ err_cleanup_nand:
|
|||
nand_cleanup(chip);
|
||||
err_release_child:
|
||||
of_node_put(nand_np);
|
||||
|
||||
for (i = 0; i < oxnas->nchips; i++) {
|
||||
chip = oxnas->chips[i];
|
||||
WARN_ON(mtd_device_unregister(nand_to_mtd(chip)));
|
||||
nand_cleanup(chip);
|
||||
}
|
||||
|
||||
err_clk_unprepare:
|
||||
clk_disable_unprepare(oxnas->clk);
|
||||
return err;
|
||||
|
|
Loading…
Reference in New Issue