On Tue, 21 Apr 2020 18:48:55 +0200 Miquel Raynal <miquel.raynal@xxxxxxxxxxx> wrote: > Ensure all chips are deregistered and cleaned in case of error during > the probe. > > Fixes: 02f26ecf8c77 ("mtd: nand: add reworked Marvell NAND controller driver") > Signed-off-by: Miquel Raynal <miquel.raynal@xxxxxxxxxxx> > --- > drivers/mtd/nand/raw/marvell_nand.c | 21 +++++++++++---------- > 1 file changed, 11 insertions(+), 10 deletions(-) > > diff --git a/drivers/mtd/nand/raw/marvell_nand.c b/drivers/mtd/nand/raw/marvell_nand.c > index 350949b34eee..cb1e1a295002 100644 > --- a/drivers/mtd/nand/raw/marvell_nand.c > +++ b/drivers/mtd/nand/raw/marvell_nand.c > @@ -2673,6 +2673,16 @@ static int marvell_nand_chip_init(struct device *dev, struct marvell_nfc *nfc, > return 0; > } > > +static void marvell_nand_chips_cleanup(struct marvell_nfc *nfc) > +{ > + struct marvell_nand_chip *entry, *temp; > + > + list_for_each_entry_safe(entry, temp, &nfc->chips, node) { > + nand_release(&entry->chip); > + list_del(&entry->node); > + } > +} > + > static int marvell_nand_chips_init(struct device *dev, struct marvell_nfc *nfc) > { > struct device_node *np = dev->of_node; > @@ -2707,6 +2717,7 @@ static int marvell_nand_chips_init(struct device *dev, struct marvell_nfc *nfc) > ret = marvell_nand_chip_init(dev, nfc, nand_np); > if (ret) { > of_node_put(nand_np); > + marvell_nand_chips_cleanup(nfc); > return ret; I'd rather add an err_chips_cleanup label for that one so you don't have to duplicate it if there are other error paths where this cleanup is needed. > } > } > @@ -2714,16 +2725,6 @@ static int marvell_nand_chips_init(struct device *dev, struct marvell_nfc *nfc) > return 0; > } > > -static void marvell_nand_chips_cleanup(struct marvell_nfc *nfc) > -{ > - struct marvell_nand_chip *entry, *temp; > - > - list_for_each_entry_safe(entry, temp, &nfc->chips, node) { > - nand_release(&entry->chip); > - list_del(&entry->node); > - } > -} > - > static int marvell_nfc_init_dma(struct marvell_nfc *nfc) > { > struct platform_device *pdev = container_of(nfc->dev, ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/