Commit 0eb8618b authored by Richard Weinberger's avatar Richard Weinberger Committed by Brian Norris

mtd: docg3: Fix kasprintf() usage

kasprintf() does a dynamic memory allocation and can fail.
We have to handle that case.
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
parent 45c2ebd7
...@@ -1815,7 +1815,7 @@ static void doc_dbg_unregister(struct docg3 *docg3) ...@@ -1815,7 +1815,7 @@ static void doc_dbg_unregister(struct docg3 *docg3)
* @chip_id: The chip ID of the supported chip * @chip_id: The chip ID of the supported chip
* @mtd: The structure to fill * @mtd: The structure to fill
*/ */
static void __init doc_set_driver_info(int chip_id, struct mtd_info *mtd) static int __init doc_set_driver_info(int chip_id, struct mtd_info *mtd)
{ {
struct docg3 *docg3 = mtd->priv; struct docg3 *docg3 = mtd->priv;
int cfg; int cfg;
...@@ -1828,6 +1828,8 @@ static void __init doc_set_driver_info(int chip_id, struct mtd_info *mtd) ...@@ -1828,6 +1828,8 @@ static void __init doc_set_driver_info(int chip_id, struct mtd_info *mtd)
case DOC_CHIPID_G3: case DOC_CHIPID_G3:
mtd->name = kasprintf(GFP_KERNEL, "docg3.%d", mtd->name = kasprintf(GFP_KERNEL, "docg3.%d",
docg3->device_id); docg3->device_id);
if (!mtd->name)
return -ENOMEM;
docg3->max_block = 2047; docg3->max_block = 2047;
break; break;
} }
...@@ -1850,6 +1852,8 @@ static void __init doc_set_driver_info(int chip_id, struct mtd_info *mtd) ...@@ -1850,6 +1852,8 @@ static void __init doc_set_driver_info(int chip_id, struct mtd_info *mtd)
mtd->_block_isbad = doc_block_isbad; mtd->_block_isbad = doc_block_isbad;
mtd->ecclayout = &docg3_oobinfo; mtd->ecclayout = &docg3_oobinfo;
mtd->ecc_strength = DOC_ECC_BCH_T; mtd->ecc_strength = DOC_ECC_BCH_T;
return 0;
} }
/** /**
...@@ -1913,7 +1917,9 @@ doc_probe_device(struct docg3_cascade *cascade, int floor, struct device *dev) ...@@ -1913,7 +1917,9 @@ doc_probe_device(struct docg3_cascade *cascade, int floor, struct device *dev)
goto nomem4; goto nomem4;
} }
doc_set_driver_info(chip_id, mtd); ret = doc_set_driver_info(chip_id, mtd);
if (ret)
goto nomem4;
doc_hamming_ecc_init(docg3, DOC_LAYOUT_OOB_PAGEINFO_SZ); doc_hamming_ecc_init(docg3, DOC_LAYOUT_OOB_PAGEINFO_SZ);
doc_reload_bbt(docg3); doc_reload_bbt(docg3);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment