diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c index 8ff4b9192a9f..177ef6bd635a 100644 --- a/fs/ext4/balloc.c +++ b/fs/ext4/balloc.c @@ -56,7 +56,8 @@ void ext4_get_group_no_and_offset(struct super_block *sb, struct ext4_super_block *es = EXT4_SB(sb)->s_es; ext4_grpblk_t offset; - blocknr = blocknr - le32_to_cpu(es->s_first_data_block); + blocknr = blocknr > le32_to_cpu(es->s_first_data_block) ? + blocknr - le32_to_cpu(es->s_first_data_block) : 0; offset = do_div(blocknr, EXT4_BLOCKS_PER_GROUP(sb)) >> EXT4_SB(sb)->s_cluster_bits; if (offsetp)