mtd: cs553x_nand: Fix kasprintf() usage
authorRichard Weinberger <richard@nod.at>
Mon, 1 Jun 2015 21:10:51 +0000 (23:10 +0200)
committerBrian Norris <computersforpeace@gmail.com>
Wed, 17 Jun 2015 01:58:47 +0000 (18:58 -0700)
kasprintf() does a dynamic memory allocation and can fail.
We have to handle that case.

Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/nand/cs553x_nand.c

index 88109d3..aec6045 100644 (file)
@@ -237,17 +237,23 @@ static int __init cs553x_init_one(int cs, int mmio, unsigned long adr)
        /* Enable the following for a flash based bad block table */
        this->bbt_options = NAND_BBT_USE_FLASH;
 
+       new_mtd->name = kasprintf(GFP_KERNEL, "cs553x_nand_cs%d", cs);
+       if (!new_mtd->name) {
+               err = -ENOMEM;
+               goto out_ior;
+       }
+
        /* Scan to find existence of the device */
        if (nand_scan(new_mtd, 1)) {
                err = -ENXIO;
-               goto out_ior;
+               goto out_free;
        }
 
-       new_mtd->name = kasprintf(GFP_KERNEL, "cs553x_nand_cs%d", cs);
-
        cs553x_mtd[cs] = new_mtd;
        goto out;
 
+out_free:
+       kfree(new_mtd->name);
 out_ior:
        iounmap(this->IO_ADDR_R);
 out_mtd: