3.16.70-rc1 review patch. If anyone has any objections, please let me know.
------------------
From: Richard Weinberger richard@nod.at
commit 0eb8618bd07533f423fed47399a0d6387bfe7cac upstream.
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 Signed-off-by: Ben Hutchings ben@decadent.org.uk --- drivers/mtd/devices/docg3.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
--- a/drivers/mtd/devices/docg3.c +++ b/drivers/mtd/devices/docg3.c @@ -1822,7 +1822,7 @@ static void __exit doc_dbg_unregister(st * @chip_id: The chip ID of the supported chip * @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; int cfg; @@ -1835,6 +1835,8 @@ static void __init doc_set_driver_info(i case DOC_CHIPID_G3: mtd->name = kasprintf(GFP_KERNEL, "docg3.%d", docg3->device_id); + if (!mtd->name) + return -ENOMEM; docg3->max_block = 2047; break; } @@ -1857,6 +1859,8 @@ static void __init doc_set_driver_info(i mtd->_block_isbad = doc_block_isbad; mtd->ecclayout = &docg3_oobinfo; mtd->ecc_strength = DOC_ECC_BCH_T; + + return 0; }
/** @@ -1920,7 +1924,9 @@ doc_probe_device(struct docg3_cascade *c 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_reload_bbt(docg3);