mtd: rawnand: oxnas: Release all devices in the _remove() path
authorMiquel Raynal <miquel.raynal@bootlin.com>
Tue, 19 May 2020 13:00:11 +0000 (15:00 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Jul 2020 07:22:25 +0000 (09:22 +0200)
commit 0a5f45e57e35d0840bedb816974ce2e63406cd8b upstream.

oxnans_nand_remove() should release all MTD devices and clean all NAND
devices, not only the first one registered.

Fixes: 668592492409 ("mtd: nand: Add OX820 NAND Support")
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-39-miquel.raynal@bootlin.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/mtd/nand/oxnas_nand.c

index 8a61a48af56586e31cb7e68fbf391c7699392985..08b6ae364f2b766c15eaaf775459836cf7635dc6 100644 (file)
@@ -184,9 +184,13 @@ err_clk_unprepare:
 static int oxnas_nand_remove(struct platform_device *pdev)
 {
        struct oxnas_nand_ctrl *oxnas = platform_get_drvdata(pdev);
+       struct nand_chip *chip;
+       int i;
 
-       if (oxnas->chips[0])
-               nand_release(oxnas->chips[0]);
+       for (i = 0; i < oxnas->nchips; i++) {
+               chip = oxnas->chips[i];
+               nand_release(chip);
+       }
 
        clk_disable_unprepare(oxnas->clk);