diff options
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/onenand/onenand_base.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c index 1b26f50e159a..045811f21497 100644 --- a/drivers/mtd/onenand/onenand_base.c +++ b/drivers/mtd/onenand/onenand_base.c | |||
@@ -3932,6 +3932,13 @@ int onenand_scan(struct mtd_info *mtd, int maxchips) | |||
3932 | __func__); | 3932 | __func__); |
3933 | return -ENOMEM; | 3933 | return -ENOMEM; |
3934 | } | 3934 | } |
3935 | #ifdef CONFIG_MTD_ONENAND_VERIFY_WRITE | ||
3936 | this->verify_buf = kzalloc(mtd->writesize, GFP_KERNEL); | ||
3937 | if (!this->verify_buf) { | ||
3938 | kfree(this->page_buf); | ||
3939 | return -ENOMEM; | ||
3940 | } | ||
3941 | #endif | ||
3935 | this->options |= ONENAND_PAGEBUF_ALLOC; | 3942 | this->options |= ONENAND_PAGEBUF_ALLOC; |
3936 | } | 3943 | } |
3937 | if (!this->oob_buf) { | 3944 | if (!this->oob_buf) { |
@@ -4059,8 +4066,12 @@ void onenand_release(struct mtd_info *mtd) | |||
4059 | kfree(this->bbm); | 4066 | kfree(this->bbm); |
4060 | } | 4067 | } |
4061 | /* Buffers allocated by onenand_scan */ | 4068 | /* Buffers allocated by onenand_scan */ |
4062 | if (this->options & ONENAND_PAGEBUF_ALLOC) | 4069 | if (this->options & ONENAND_PAGEBUF_ALLOC) { |
4063 | kfree(this->page_buf); | 4070 | kfree(this->page_buf); |
4071 | #ifdef CONFIG_MTD_ONENAND_VERIFY_WRITE | ||
4072 | kfree(this->verify_buf); | ||
4073 | #endif | ||
4074 | } | ||
4064 | if (this->options & ONENAND_OOBBUF_ALLOC) | 4075 | if (this->options & ONENAND_OOBBUF_ALLOC) |
4065 | kfree(this->oob_buf); | 4076 | kfree(this->oob_buf); |
4066 | kfree(mtd->eraseregions); | 4077 | kfree(mtd->eraseregions); |