| 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); | 
 |  } | 
 |   |