On Jun 12, 2008 11:42 +0200, Fr�d�ric Boh� wrote: > From: Frederic Bohe <frederic.bohe@xxxxxxxx> > > This is the patch for the group descriptor table corruption during > online resize pointed out by Theodore Tso. > The issue was due to the ext4 group descriptor which can be either > 32 or 64 bytes long. > Only the 64 bytes structure was taken into account. > > diff -rup a/fs/ext4/resize.c b/fs/ext4/resize.c > --- a/fs/ext4/resize.c > +++ b/fs/ext4/resize.c > @@ -855,7 +855,8 @@ int ext4_group_add(struct super_block *s > */ > > /* Update group descriptor block for new group */ > - gdp = (struct ext4_group_desc *)primary->b_data + gdb_off; > + gdp = (struct ext4_group_desc *)( > + (__u8 *)primary->b_data + gdb_off * EXT4_DESC_SIZE(sb)); Normally pointer arithmetic is done by casting to (char *)... Otherwise, patch looks sensible, though it could be reformatted to match the normal coding style a bit better: gdp = (struct ext4_group_desc *)((char *)primary->b_data + gdb_off * EXT4_DESC_SIZE(sb)); Cheers, Andreas -- Andreas Dilger Sr. Staff Engineer, Lustre Group Sun Microsystems of Canada, Inc. -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html