On Wed, Mar 07, 2001 at 01:35:05PM -0700, Andreas Dilger wrote:
> The only remote possibility is in ext2_free_blocks() if block+count
> overflows a 32-bit unsigned value. Only 2 places call ext2_free_blocks()
> with a count != 1, and ext2_free_data() looks to be OK. The other
> possibility is that i_prealloc_count is bogus - that is it! Nowhere
> is i_prealloc_count initialized to zero AFAICS.
>
Did you ever push this to Alan and/or Linus? This looks pretty
important!
Cheers,
Stephen
> ==========================================================================
> diff -ru linux/fs/ext2/ialloc.c.orig linux/fs/ext2/ialloc.c
> --- linux/fs/ext2/ialloc.c.orig Fri Dec 8 18:35:54 2000
> +++ linux/fs/ext2/ialloc.c Wed Mar 7 12:22:11 2001
> @@ -432,6 +444,8 @@
> inode->u.ext2_i.i_file_acl = 0;
> inode->u.ext2_i.i_dir_acl = 0;
> inode->u.ext2_i.i_dtime = 0;
> + inode->u.ext2_i.i_prealloc_count = 0;
> inode->u.ext2_i.i_block_group = i;
> if (inode->u.ext2_i.i_flags & EXT2_SYNC_FL)
> inode->i_flags |= S_SYNC;
> diff -ru linux/fs/ext2/inode.c.orig linux/fs/ext2/inode.c
> --- linux/fs/ext2/inode.c.orig Tue Jan 16 01:29:29 2001
> +++ linux/fs/ext2/inode.c Wed Mar 7 12:05:47 2001
> @@ -1048,6 +1038,8 @@
> (((__u64)le32_to_cpu(raw_inode->i_size_high)) << 32);
> }
> inode->i_generation = le32_to_cpu(raw_inode->i_generation);
> + inode->u.ext2_i.i_prealloc_count = 0;
> inode->u.ext2_i.i_block_group = block_group;
>
> /*
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/