On Fri, 24 Apr 2020 18:44:59 +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> Reviewed-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx> > --- > drivers/mtd/nand/raw/marvell_nand.c | 23 ++++++++++++++--------- > 1 file changed, 14 insertions(+), 9 deletions(-) > > diff --git a/drivers/mtd/nand/raw/marvell_nand.c b/drivers/mtd/nand/raw/marvell_nand.c > index 350949b34eee..10b7f43d28e6 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,21 +2717,16 @@ 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); > - return ret; > + goto cleanup_chips; > } > } > > return 0; > -} > > -static void marvell_nand_chips_cleanup(struct marvell_nfc *nfc) > -{ > - struct marvell_nand_chip *entry, *temp; > +cleanup_chips: > + marvell_nand_chips_cleanup(nfc); > > - list_for_each_entry_safe(entry, temp, &nfc->chips, node) { > - nand_release(&entry->chip); > - list_del(&entry->node); > - } > + return ret; > } > > static int marvell_nfc_init_dma(struct marvell_nfc *nfc) ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/