* [PATCH] fix inode_table test in ext234_check_descriptors
@ 2007-07-23 17:16 Eric Sandeen
2007-07-23 20:57 ` Eric Sandeen
0 siblings, 1 reply; 2+ messages in thread
From: Eric Sandeen @ 2007-07-23 17:16 UTC (permalink / raw)
To: ext4 development; +Cc: Linux Kernel Mailing List
ext[234]_check_descriptors sanity checks block group descriptor geometry
at mount time, testing whether the block bitmap, inode bitmap, and
inode table reside wholly within the blockgroup. However, the inode
table test is off by one so that if the last block in the inode table
resides on the last block of the block group, the test incorrectly
fails. This is because it tests the last block as (start + length)
rather than (start + length - 1).
This can be seen by trying to mount a filesystem made such as:
mkfs.ext2 -F -b 1024 -m 0 -g 256 -N 3744 fsfile 1024
which yields:
EXT2-fs error (device loop0): ext2_check_descriptors: Inode table for group 0 not in group (block 101)!
EXT2-fs: group descriptors corrupted!
There is a similar bug in e2fsprogs, patch already sent for that.
(I wonder if inside(), outside(), and/or in_range() should someday be
used in this and other tests throughout the ext filesystems...)
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Index: linux-2.6.22-rc4/fs/ext2/super.c
===================================================================
--- linux-2.6.22-rc4.orig/fs/ext2/super.c
+++ linux-2.6.22-rc4/fs/ext2/super.c
@@ -579,7 +579,7 @@ static int ext2_check_descriptors (struc
return 0;
}
if (le32_to_cpu(gdp->bg_inode_table) < first_block ||
- le32_to_cpu(gdp->bg_inode_table) + sbi->s_itb_per_group >
+ le32_to_cpu(gdp->bg_inode_table) + sbi->s_itb_per_group - 1 >
last_block)
{
ext2_error (sb, "ext2_check_descriptors",
Index: linux-2.6.22-rc4/fs/ext3/super.c
===================================================================
--- linux-2.6.22-rc4.orig/fs/ext3/super.c
+++ linux-2.6.22-rc4/fs/ext3/super.c
@@ -1211,7 +1211,7 @@ static int ext3_check_descriptors (struc
return 0;
}
if (le32_to_cpu(gdp->bg_inode_table) < first_block ||
- le32_to_cpu(gdp->bg_inode_table) + sbi->s_itb_per_group >
+ le32_to_cpu(gdp->bg_inode_table) + sbi->s_itb_per_group - 1 >
last_block)
{
ext3_error (sb, "ext3_check_descriptors",
Index: linux-2.6.22-rc4/fs/ext4/super.c
===================================================================
--- linux-2.6.22-rc4.orig/fs/ext4/super.c
+++ linux-2.6.22-rc4/fs/ext4/super.c
@@ -1269,7 +1269,7 @@ static int ext4_check_descriptors (struc
}
inode_table = ext4_inode_table(sb, gdp);
if (inode_table < first_block ||
- inode_table + sbi->s_itb_per_group > last_block)
+ inode_table + sbi->s_itb_per_group - 1 > last_block)
{
ext4_error (sb, "ext4_check_descriptors",
"Inode table for group %d"
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] fix inode_table test in ext234_check_descriptors
2007-07-23 17:16 [PATCH] fix inode_table test in ext234_check_descriptors Eric Sandeen
@ 2007-07-23 20:57 ` Eric Sandeen
0 siblings, 0 replies; 2+ messages in thread
From: Eric Sandeen @ 2007-07-23 20:57 UTC (permalink / raw)
To: ext4 development; +Cc: Linux Kernel Mailing List
Eric Sandeen wrote:
> ext[234]_check_descriptors sanity checks block group descriptor geometry
> at mount time, testing whether the block bitmap, inode bitmap, and
> inode table reside wholly within the blockgroup. However, the inode
> table test is off by one so that if the last block in the inode table
> resides on the last block of the block group, the test incorrectly
> fails. This is because it tests the last block as (start + length)
> rather than (start + length - 1).
>
> This can be seen by trying to mount a filesystem made such as:
> mkfs.ext2 -F -b 1024 -m 0 -g 256 -N 3744 fsfile 1024
> which yields:
> EXT2-fs error (device loop0): ext2_check_descriptors: Inode table for group 0 not in group (block 101)!
> EXT2-fs: group descriptors corrupted!
Hm, sorry, after seeing Miklos' last patches... should I be sending
these as 3 different patches for ext2, 3, and 4...?
-Eric (who really doesn't want to make Andrew mad at him) :)
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2007-07-23 21:03 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-23 17:16 [PATCH] fix inode_table test in ext234_check_descriptors Eric Sandeen
2007-07-23 20:57 ` Eric Sandeen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).