diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2009-12-15 22:27:20 -0500 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2009-12-15 22:27:20 -0500 |
commit | 2e16cfca6e17ae37ae21feca080a6f2eca9087dc (patch) | |
tree | 6474bcbf5d7f79d359b07fd187093beb4b8b489d /fs/jffs2 | |
parent | 0a032a4df6dc4a82bcd1c401e57ee71825d30c14 (diff) |
jffs2: Fix long-standing bug with symlink garbage collection.
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.
Cc: stable@kernel.org
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'fs/jffs2')
-rw-r--r-- | fs/jffs2/gc.c | 3 |
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_ | |||
700 | struct jffs2_raw_inode ri; | 700 | struct jffs2_raw_inode ri; |
701 | struct jffs2_node_frag *last_frag; | 701 | struct jffs2_node_frag *last_frag; |
702 | union jffs2_device_node dev; | 702 | union jffs2_device_node dev; |
703 | char *mdata = NULL, mdatalen = 0; | 703 | char *mdata = NULL; |
704 | int mdatalen = 0; | ||
704 | uint32_t alloclen, ilen; | 705 | uint32_t alloclen, ilen; |
705 | int ret; | 706 | int ret; |
706 | 707 | ||