mtd: cs553x_nand: Fix kasprintf() usage

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>
This commit is contained in:
Richard Weinberger 2015-06-01 23:10:51 +02:00 коммит произвёл Brian Norris
Родитель 905cce7f43
Коммит bc349da0a6
1 изменённых файлов: 10 добавлений и 4 удалений

Просмотреть файл

@ -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 */ /* Enable the following for a flash based bad block table */
this->bbt_options = NAND_BBT_USE_FLASH; this->bbt_options = NAND_BBT_USE_FLASH;
/* Scan to find existence of the device */ new_mtd->name = kasprintf(GFP_KERNEL, "cs553x_nand_cs%d", cs);
if (nand_scan(new_mtd, 1)) { if (!new_mtd->name) {
err = -ENXIO; err = -ENOMEM;
goto out_ior; goto out_ior;
} }
new_mtd->name = kasprintf(GFP_KERNEL, "cs553x_nand_cs%d", cs); /* Scan to find existence of the device */
if (nand_scan(new_mtd, 1)) {
err = -ENXIO;
goto out_free;
}
cs553x_mtd[cs] = new_mtd; cs553x_mtd[cs] = new_mtd;
goto out; goto out;
out_free:
kfree(new_mtd->name);
out_ior: out_ior:
iounmap(this->IO_ADDR_R); iounmap(this->IO_ADDR_R);
out_mtd: out_mtd: