Skip to content

Commit 23361bd

Browse files
wangzijieJaegeuk Kim
authored andcommitted
f2fs: fix infinite loop in __insert_extent_tree()
When we get wrong extent info data, and look up extent_node in rb tree, it will cause infinite loop (CONFIG_F2FS_CHECK_FS=n). Avoiding this by return NULL and print some kernel messages in that case. Signed-off-by: wangzijie <[email protected]> Reviewed-by: Chao Yu <[email protected]> Signed-off-by: Jaegeuk Kim <[email protected]>
1 parent 8175c86 commit 23361bd

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

fs/f2fs/extent_cache.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,13 @@ static struct extent_node *__insert_extent_tree(struct f2fs_sb_info *sbi,
604604
p = &(*p)->rb_right;
605605
leftmost = false;
606606
} else {
607+
f2fs_err_ratelimited(sbi, "%s: corrupted extent, type: %d, "
608+
"extent node in rb tree [%u, %u, %u], age [%llu, %llu], "
609+
"extent node to insert [%u, %u, %u], age [%llu, %llu]",
610+
__func__, et->type, en->ei.fofs, en->ei.blk, en->ei.len, en->ei.age,
611+
en->ei.last_blocks, ei->fofs, ei->blk, ei->len, ei->age, ei->last_blocks);
607612
f2fs_bug_on(sbi, 1);
613+
return NULL;
608614
}
609615
}
610616

0 commit comments

Comments
 (0)