kasprintf() does a dynamic memory allocation and can fail.
We have to handle that case.

Signed-off-by: Richard Weinberger <rich...@nod.at>
---
 drivers/mtd/nand/cs553x_nand.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/mtd/nand/cs553x_nand.c b/drivers/mtd/nand/cs553x_nand.c
index 88109d3..aec6045 100644
--- a/drivers/mtd/nand/cs553x_nand.c
+++ b/drivers/mtd/nand/cs553x_nand.c
@@ -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:
-- 
1.8.4.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to