| From bc8cec0dff072f1a45ce7f6b2c5234bb3411ac51 Mon Sep 17 00:00:00 2001 |
| From: Massimo Cirillo <maxcir@gmail.com> |
| Date: Thu, 27 Aug 2009 10:44:09 +0200 |
| Subject: JFFS2: add missing verify buffer allocation/deallocation |
| |
| From: Massimo Cirillo <maxcir@gmail.com> |
| |
| commit bc8cec0dff072f1a45ce7f6b2c5234bb3411ac51 upstream. |
| |
| The function jffs2_nor_wbuf_flash_setup() doesn't allocate the verify buffer |
| if CONFIG_JFFS2_FS_WBUF_VERIFY is defined, so causing a kernel panic when |
| that macro is enabled and the verify function is called. Similarly the |
| jffs2_nor_wbuf_flash_cleanup() must free the buffer if |
| CONFIG_JFFS2_FS_WBUF_VERIFY is enabled. |
| The following patch fixes the problem. |
| The following patch applies to 2.6.30 kernel. |
| |
| Signed-off-by: Massimo Cirillo <maxcir@gmail.com> |
| Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> |
| Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| fs/jffs2/wbuf.c | 10 ++++++++++ |
| 1 file changed, 10 insertions(+) |
| |
| --- a/fs/jffs2/wbuf.c |
| +++ b/fs/jffs2/wbuf.c |
| @@ -1268,10 +1268,20 @@ int jffs2_nor_wbuf_flash_setup(struct jf |
| if (!c->wbuf) |
| return -ENOMEM; |
| |
| +#ifdef CONFIG_JFFS2_FS_WBUF_VERIFY |
| + c->wbuf_verify = kmalloc(c->wbuf_pagesize, GFP_KERNEL); |
| + if (!c->wbuf_verify) { |
| + kfree(c->wbuf); |
| + return -ENOMEM; |
| + } |
| +#endif |
| return 0; |
| } |
| |
| void jffs2_nor_wbuf_flash_cleanup(struct jffs2_sb_info *c) { |
| +#ifdef CONFIG_JFFS2_FS_WBUF_VERIFY |
| + kfree(c->wbuf_verify); |
| +#endif |
| kfree(c->wbuf); |
| } |
| |