mtd: nand: don't leak buffers when ->scan_bbt() fails
authorBrian Norris <computersforpeace@gmail.com>
Tue, 2 May 2017 00:04:50 +0000 (17:04 -0700)
committerBoris Brezillon <boris.brezillon@free-electrons.com>
Mon, 22 May 2017 07:42:29 +0000 (09:42 +0200)
This bug seems to have been here forever, although we came close to
fixing all of them in [1]!

[1] 11eaf6df1cce ("mtd: nand: Remove BUG() abuse in nand_scan_tail")

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Acked-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
drivers/mtd/nand/nand_base.c

index d474378ed810b3c3ab19d8a4e85e77e0eb15511c..66782291a762499a1fbff5d9001a797fa013d884 100644 (file)
@@ -4842,7 +4842,11 @@ int nand_scan_tail(struct mtd_info *mtd)
                return 0;
 
        /* Build bad block table */
-       return chip->scan_bbt(mtd);
+       ret = chip->scan_bbt(mtd);
+       if (ret)
+               goto err_free;
+       return 0;
+
 err_free:
        if (nbuf) {
                kfree(nbuf->databuf);