diff options
Diffstat (limited to 'drivers/mtd/onenand')
-rw-r--r-- | drivers/mtd/onenand/generic.c | 4 | ||||
-rw-r--r-- | drivers/mtd/onenand/onenand_bbt.c | 10 |
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; |