summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Woodhouse <David.Woodhouse@intel.com>2009-12-16 03:27:20 +0000
committerGreg Kroah-Hartman <gregkh@suse.de>2009-12-18 14:05:52 -0800
commit3a03456dc34ff703e5b7c718b78713577f832116 (patch)
treefe44dd0309743346b7c20b229d8d22b5294e797c
parent75bc75ed15405655d795a163856158aa2ff9bdbc (diff)
downloadlwn-3a03456dc34ff703e5b7c718b78713577f832116.tar.gz
lwn-3a03456dc34ff703e5b7c718b78713577f832116.zip
jffs2: Fix long-standing bug with symlink garbage collection.
commit 2e16cfca6e17ae37ae21feca080a6f2eca9087dc upstream. Ever since jffs2_garbage_collect_metadata() was first half-written in February 2001, it's been broken on architectures where 'char' is signed. When garbage collecting a symlink with target length above 127, the payload length would end up negative, causing interesting and bad things to happen. Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--fs/jffs2/gc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/jffs2/gc.c b/fs/jffs2/gc.c
index 090c556ffed2..3b6f2fa12cff 100644
--- a/fs/jffs2/gc.c
+++ b/fs/jffs2/gc.c
@@ -700,7 +700,8 @@ static int jffs2_garbage_collect_metadata(struct jffs2_sb_info *c, struct jffs2_
struct jffs2_raw_inode ri;
struct jffs2_node_frag *last_frag;
union jffs2_device_node dev;
- char *mdata = NULL, mdatalen = 0;
+ char *mdata = NULL;
+ int mdatalen = 0;
uint32_t alloclen, ilen;
int ret;