]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mtd: rawnand: diskonchip: Fix the probe error path
authorMiquel Raynal <miquel.raynal@bootlin.com>
Tue, 19 May 2020 12:59:45 +0000 (14:59 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 10 Apr 2021 11:01:58 +0000 (13:01 +0200)
commit c5be12e45940f1aa1b5dfa04db5d15ad24f7c896 upstream

Not sure nand_cleanup() is the right function to call here but in any
case it is not nand_release(). Indeed, even a comment says that
calling nand_release() is a bit of a hack as there is no MTD device to
unregister. So switch to nand_cleanup() for now and drop this
comment.

There is no Fixes tag applying here as the use of nand_release()
in this driver predates by far the introduction of nand_cleanup() in
commit d44154f969a4 ("mtd: nand: Provide nand_cleanup() function to free NAND related resources")
which makes this change possible. However, pointing this commit as the
culprit for backporting purposes makes sense even if it did not intruce
any bug.

Fixes: d44154f969a4 ("mtd: nand: Provide nand_cleanup() function to free NAND related resources")
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-13-miquel.raynal@bootlin.com
[sudip: manual backport to old file]
Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/mtd/nand/diskonchip.c

index 0802158a3f757b19506947bdbf1d46124ae6fdc8..557fcf1c21feefe24a8a74fea9b493b5e4138091 100644 (file)
@@ -1608,13 +1608,10 @@ static int __init doc_probe(unsigned long physadr)
                numchips = doc2001_init(mtd);
 
        if ((ret = nand_scan(mtd, numchips)) || (ret = doc->late_init(mtd))) {
-               /* DBB note: i believe nand_release is necessary here, as
+               /* DBB note: i believe nand_cleanup is necessary here, as
                   buffers may have been allocated in nand_base.  Check with
                   Thomas. FIX ME! */
-               /* nand_release will call mtd_device_unregister, but we
-                  haven't yet added it.  This is handled without incident by
-                  mtd_device_unregister, as far as I can tell. */
-               nand_release(mtd);
+               nand_cleanup(nand);
                kfree(mtd);
                goto fail;
        }