|
@@ -321,6 +321,7 @@ static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb,
|
|
|
struct ext4_sb_info *sbi = EXT4_SB(sb);
|
|
|
ext4_grpblk_t offset;
|
|
|
ext4_grpblk_t next_zero_bit;
|
|
|
+ ext4_grpblk_t max_bit = EXT4_CLUSTERS_PER_GROUP(sb);
|
|
|
ext4_fsblk_t blk;
|
|
|
ext4_fsblk_t group_first_block;
|
|
|
|
|
@@ -338,7 +339,7 @@ static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb,
|
|
|
/* check whether block bitmap block number is set */
|
|
|
blk = ext4_block_bitmap(sb, desc);
|
|
|
offset = blk - group_first_block;
|
|
|
- if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize ||
|
|
|
+ if (offset < 0 || EXT4_B2C(sbi, offset) >= max_bit ||
|
|
|
!ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data))
|
|
|
/* bad block bitmap */
|
|
|
return blk;
|
|
@@ -346,7 +347,7 @@ static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb,
|
|
|
/* check whether the inode bitmap block number is set */
|
|
|
blk = ext4_inode_bitmap(sb, desc);
|
|
|
offset = blk - group_first_block;
|
|
|
- if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize ||
|
|
|
+ if (offset < 0 || EXT4_B2C(sbi, offset) >= max_bit ||
|
|
|
!ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data))
|
|
|
/* bad block bitmap */
|
|
|
return blk;
|
|
@@ -354,8 +355,8 @@ static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb,
|
|
|
/* check whether the inode table block number is set */
|
|
|
blk = ext4_inode_table(sb, desc);
|
|
|
offset = blk - group_first_block;
|
|
|
- if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize ||
|
|
|
- EXT4_B2C(sbi, offset + sbi->s_itb_per_group) >= sb->s_blocksize)
|
|
|
+ if (offset < 0 || EXT4_B2C(sbi, offset) >= max_bit ||
|
|
|
+ EXT4_B2C(sbi, offset + sbi->s_itb_per_group) >= max_bit)
|
|
|
return blk;
|
|
|
next_zero_bit = ext4_find_next_zero_bit(bh->b_data,
|
|
|
EXT4_B2C(sbi, offset + sbi->s_itb_per_group),
|