|
@@ -1815,7 +1815,7 @@ static void doc_dbg_unregister(struct docg3 *docg3)
|
|
|
* @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;
|
|
@@ -1828,6 +1828,8 @@ static void __init doc_set_driver_info(int chip_id, struct mtd_info *mtd)
|
|
|
case DOC_CHIPID_G3:
|
|
|
mtd->name = kasprintf(GFP_KERNEL, "docg3.%d",
|
|
|
docg3->device_id);
|
|
|
+ if (!mtd->name)
|
|
|
+ return -ENOMEM;
|
|
|
docg3->max_block = 2047;
|
|
|
break;
|
|
|
}
|
|
@@ -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->ecclayout = &docg3_oobinfo;
|
|
|
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)
|
|
|
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);
|