aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/onenand
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mtd/onenand')
-rw-r--r--drivers/mtd/onenand/generic.c4
-rw-r--r--drivers/mtd/onenand/onenand_bbt.c10
2 files changed, 4 insertions, 10 deletions
diff --git a/drivers/mtd/onenand/generic.c b/drivers/mtd/onenand/generic.c
index af06a80f44de..53eb5632bdbb 100644
--- a/drivers/mtd/onenand/generic.c
+++ b/drivers/mtd/onenand/generic.c
@@ -45,12 +45,10 @@ static int __devinit generic_onenand_probe(struct device *dev)
45 unsigned long size = res->end - res->start + 1; 45 unsigned long size = res->end - res->start + 1;
46 int err; 46 int err;
47 47
48 info = kmalloc(sizeof(struct onenand_info), GFP_KERNEL); 48 info = kzalloc(sizeof(struct onenand_info), GFP_KERNEL);
49 if (!info) 49 if (!info)
50 return -ENOMEM; 50 return -ENOMEM;
51 51
52 memset(info, 0, sizeof(struct onenand_info));
53
54 if (!request_mem_region(res->start, size, dev->driver->name)) { 52 if (!request_mem_region(res->start, size, dev->driver->name)) {
55 err = -EBUSY; 53 err = -EBUSY;
56 goto out_free_info; 54 goto out_free_info;
diff --git a/drivers/mtd/onenand/onenand_bbt.c b/drivers/mtd/onenand/onenand_bbt.c
index 1b00dac3d7d6..e3822c1cdb8d 100644
--- a/drivers/mtd/onenand/onenand_bbt.c
+++ b/drivers/mtd/onenand/onenand_bbt.c
@@ -177,14 +177,12 @@ int onenand_scan_bbt(struct mtd_info *mtd, struct nand_bbt_descr *bd)
177 int len, ret = 0; 177 int len, ret = 0;
178 178
179 len = mtd->size >> (this->erase_shift + 2); 179 len = mtd->size >> (this->erase_shift + 2);
180 /* Allocate memory (2bit per block) */ 180 /* Allocate memory (2bit per block) and clear the memory bad block table */
181 bbm->bbt = kmalloc(len, GFP_KERNEL); 181 bbm->bbt = kzalloc(len, GFP_KERNEL);
182 if (!bbm->bbt) { 182 if (!bbm->bbt) {
183 printk(KERN_ERR "onenand_scan_bbt: Out of memory\n"); 183 printk(KERN_ERR "onenand_scan_bbt: Out of memory\n");
184 return -ENOMEM; 184 return -ENOMEM;
185 } 185 }
186 /* Clear the memory bad block table */
187 memset(bbm->bbt, 0x00, len);
188 186
189 /* Set the bad block position */ 187 /* Set the bad block position */
190 bbm->badblockpos = ONENAND_BADBLOCK_POS; 188 bbm->badblockpos = ONENAND_BADBLOCK_POS;
@@ -230,14 +228,12 @@ int onenand_default_bbt(struct mtd_info *mtd)
230 struct onenand_chip *this = mtd->priv; 228 struct onenand_chip *this = mtd->priv;
231 struct bbm_info *bbm; 229 struct bbm_info *bbm;
232 230
233 this->bbm = kmalloc(sizeof(struct bbm_info), GFP_KERNEL); 231 this->bbm = kzalloc(sizeof(struct bbm_info), GFP_KERNEL);
234 if (!this->bbm) 232 if (!this->bbm)
235 return -ENOMEM; 233 return -ENOMEM;
236 234
237 bbm = this->bbm; 235 bbm = this->bbm;
238 236
239 memset(bbm, 0, sizeof(struct bbm_info));
240
241 /* 1KB page has same configuration as 2KB page */ 237 /* 1KB page has same configuration as 2KB page */
242 if (!bbm->badblock_pattern) 238 if (!bbm->badblock_pattern)
243 bbm->badblock_pattern = &largepage_memorybased; 239 bbm->badblock_pattern = &largepage_memorybased;