Commit de0bb97a authored by Al Viro's avatar Al Viro Committed by Linus Torvalds

[PATCH] forgotten ->b_data in memcpy() call in ext3/resize.c (oopsable)

sbi->s_group_desc is an array of pointers to buffer_head.  memcpy() of
buffer size from address of buffer_head is a bad idea - it will generate
junk in any case, may oops if buffer_head is close to the end of slab
page and next page is not mapped and isn't what was intended there.
IOW, ->b_data is missing in that call.  Fortunately, result doesn't go
into the primary on-disk data structures, so only backup ones get crap
written to them; that had allowed this bug to remain unnoticed until
now.
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent c82ffb07
...@@ -213,7 +213,7 @@ static int setup_new_group_blocks(struct super_block *sb, ...@@ -213,7 +213,7 @@ static int setup_new_group_blocks(struct super_block *sb,
goto exit_bh; goto exit_bh;
} }
lock_buffer(bh); lock_buffer(bh);
memcpy(gdb->b_data, sbi->s_group_desc[i], bh->b_size); memcpy(gdb->b_data, sbi->s_group_desc[i]->b_data, bh->b_size);
set_buffer_uptodate(gdb); set_buffer_uptodate(gdb);
unlock_buffer(bh); unlock_buffer(bh);
ext3_journal_dirty_metadata(handle, gdb); ext3_journal_dirty_metadata(handle, gdb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment