diff options
| -rw-r--r-- | fs/ext4/balloc.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c index a33d8fb1bf2a..508b905d744d 100644 --- a/fs/ext4/balloc.c +++ b/fs/ext4/balloc.c | |||
| @@ -321,6 +321,7 @@ static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb, | |||
| 321 | struct ext4_sb_info *sbi = EXT4_SB(sb); | 321 | struct ext4_sb_info *sbi = EXT4_SB(sb); |
| 322 | ext4_grpblk_t offset; | 322 | ext4_grpblk_t offset; |
| 323 | ext4_grpblk_t next_zero_bit; | 323 | ext4_grpblk_t next_zero_bit; |
| 324 | ext4_grpblk_t max_bit = EXT4_CLUSTERS_PER_GROUP(sb); | ||
| 324 | ext4_fsblk_t blk; | 325 | ext4_fsblk_t blk; |
| 325 | ext4_fsblk_t group_first_block; | 326 | ext4_fsblk_t group_first_block; |
| 326 | 327 | ||
| @@ -338,7 +339,7 @@ static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb, | |||
| 338 | /* check whether block bitmap block number is set */ | 339 | /* check whether block bitmap block number is set */ |
| 339 | blk = ext4_block_bitmap(sb, desc); | 340 | blk = ext4_block_bitmap(sb, desc); |
| 340 | offset = blk - group_first_block; | 341 | offset = blk - group_first_block; |
| 341 | if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize || | 342 | if (offset < 0 || EXT4_B2C(sbi, offset) >= max_bit || |
| 342 | !ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data)) | 343 | !ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data)) |
| 343 | /* bad block bitmap */ | 344 | /* bad block bitmap */ |
| 344 | return blk; | 345 | return blk; |
| @@ -346,7 +347,7 @@ static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb, | |||
| 346 | /* check whether the inode bitmap block number is set */ | 347 | /* check whether the inode bitmap block number is set */ |
| 347 | blk = ext4_inode_bitmap(sb, desc); | 348 | blk = ext4_inode_bitmap(sb, desc); |
| 348 | offset = blk - group_first_block; | 349 | offset = blk - group_first_block; |
| 349 | if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize || | 350 | if (offset < 0 || EXT4_B2C(sbi, offset) >= max_bit || |
| 350 | !ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data)) | 351 | !ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data)) |
| 351 | /* bad block bitmap */ | 352 | /* bad block bitmap */ |
| 352 | return blk; | 353 | return blk; |
| @@ -354,8 +355,8 @@ static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb, | |||
| 354 | /* check whether the inode table block number is set */ | 355 | /* check whether the inode table block number is set */ |
| 355 | blk = ext4_inode_table(sb, desc); | 356 | blk = ext4_inode_table(sb, desc); |
| 356 | offset = blk - group_first_block; | 357 | offset = blk - group_first_block; |
| 357 | if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize || | 358 | if (offset < 0 || EXT4_B2C(sbi, offset) >= max_bit || |
| 358 | EXT4_B2C(sbi, offset + sbi->s_itb_per_group) >= sb->s_blocksize) | 359 | EXT4_B2C(sbi, offset + sbi->s_itb_per_group) >= max_bit) |
| 359 | return blk; | 360 | return blk; |
| 360 | next_zero_bit = ext4_find_next_zero_bit(bh->b_data, | 361 | next_zero_bit = ext4_find_next_zero_bit(bh->b_data, |
| 361 | EXT4_B2C(sbi, offset + sbi->s_itb_per_group), | 362 | EXT4_B2C(sbi, offset + sbi->s_itb_per_group), |
