]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ext4: avoid dividing by 0 in mb_update_avg_fragment_size() when block bitmap corrupt
authorBaokun Li <libaokun1@huawei.com>
Thu, 4 Jan 2024 14:20:37 +0000 (22:20 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 1 Mar 2024 12:34:50 +0000 (13:34 +0100)
[ Upstream commit 993bf0f4c393b3667830918f9247438a8f6fdb5b ]

Determine if bb_fragments is 0 instead of determining bb_free to eliminate
the risk of dividing by zero when the block bitmap is corrupted.

Signed-off-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20240104142040.2835097-6-libaokun1@huawei.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/ext4/mballoc.c

index 7a2d42a84807a05027452021308a68c1a26d4089..9eac63e5a251c764b24524045f890b3ae175825d 100644 (file)
@@ -841,7 +841,7 @@ mb_update_avg_fragment_size(struct super_block *sb, struct ext4_group_info *grp)
        struct ext4_sb_info *sbi = EXT4_SB(sb);
        int new_order;
 
-       if (!test_opt2(sb, MB_OPTIMIZE_SCAN) || grp->bb_free == 0)
+       if (!test_opt2(sb, MB_OPTIMIZE_SCAN) || grp->bb_fragments == 0)
                return;
 
        new_order = mb_avg_fragment_size_order(sb,