All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] forgotten ->b_data in memcpy() call in ext3/resize.c (oopsable)
@ 2006-04-26  6:26 Al Viro
  0 siblings, 0 replies; only message in thread
From: Al Viro @ 2006-04-26  6:26 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, sct

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: Al Viro <viro@zeniv.linux.org.uk>

---

 fs/ext3/resize.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

e26179ed6fdd952b91a313a275191ae97bcd4d71
diff --git a/fs/ext3/resize.c b/fs/ext3/resize.c
index c5ffa85..8aac533 100644
--- a/fs/ext3/resize.c
+++ b/fs/ext3/resize.c
@@ -213,7 +213,7 @@ static int setup_new_group_blocks(struct
 			goto exit_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);
 		unlock_buffer(bh);
 		ext3_journal_dirty_metadata(handle, gdb);
-- 
1.3.0.g0080f


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2006-04-26  6:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-04-26  6:26 [PATCH] forgotten ->b_data in memcpy() call in ext3/resize.c (oopsable) Al Viro

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.