When bb_free is not 0 but bb_fragments is 0, return directly to avoid system crash due to division by zero. Fixes: 83e80a6e3543 ("ext4: use buckets for cr 1 block scan instead of rbtree") CC: stable@xxxxxxxxxxxxxxx Signed-off-by: Baokun Li <libaokun1@xxxxxxxxxx> --- fs/ext4/mballoc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 2fbee0f0f5c3..e2a167240335 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -845,6 +845,9 @@ mb_update_avg_fragment_size(struct super_block *sb, struct ext4_group_info *grp) if (!test_opt2(sb, MB_OPTIMIZE_SCAN) || grp->bb_free == 0) return; + if (unlikely(grp->bb_fragments == 0)) + return; + new_order = mb_avg_fragment_size_order(sb, grp->bb_free / grp->bb_fragments); if (new_order == grp->bb_avg_fragment_size_order) -- 2.31.1