Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mtd: docg3: 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>

authored by

Richard Weinberger and committed by
Brian Norris
0eb8618b 45c2ebd7

+8 -2
+8 -2
drivers/mtd/devices/docg3.c
··· 1815 1815 * @chip_id: The chip ID of the supported chip 1816 1816 * @mtd: The structure to fill 1817 1817 */ 1818 - static void __init doc_set_driver_info(int chip_id, struct mtd_info *mtd) 1818 + static int __init doc_set_driver_info(int chip_id, struct mtd_info *mtd) 1819 1819 { 1820 1820 struct docg3 *docg3 = mtd->priv; 1821 1821 int cfg; ··· 1828 1828 case DOC_CHIPID_G3: 1829 1829 mtd->name = kasprintf(GFP_KERNEL, "docg3.%d", 1830 1830 docg3->device_id); 1831 + if (!mtd->name) 1832 + return -ENOMEM; 1831 1833 docg3->max_block = 2047; 1832 1834 break; 1833 1835 } ··· 1852 1850 mtd->_block_isbad = doc_block_isbad; 1853 1851 mtd->ecclayout = &docg3_oobinfo; 1854 1852 mtd->ecc_strength = DOC_ECC_BCH_T; 1853 + 1854 + return 0; 1855 1855 } 1856 1856 1857 1857 /** ··· 1917 1913 goto nomem4; 1918 1914 } 1919 1915 1920 - doc_set_driver_info(chip_id, mtd); 1916 + ret = doc_set_driver_info(chip_id, mtd); 1917 + if (ret) 1918 + goto nomem4; 1921 1919 1922 1920 doc_hamming_ecc_init(docg3, DOC_LAYOUT_OOB_PAGEINFO_SZ); 1923 1921 doc_reload_bbt(docg3);