f2fs: Add check for deleted inode
PATCH v3 1/1 f2fs: Add check for deleted inode
The syzbot reproducer mounts a f2fs image, then tries to unlink an existing file. However, the unlinked file already has a link count of 0 when it is read for the first time in do_read_inode().
Add a check to sanity_check_inode() for i_nlink == 0.
Reported-by [email protected]
Fixes 39a53e0ce0df ("f2fs: add superblock and major in-memory structure")
Signed-off-by Leo Stone <[email protected]>
---
v3: Correct "Fixes" line again. Sorry for my confusion.
v2: https://lore.kernel.org/linux-f2fs-devel/[email protected]/T/
v1: https://lore.kernel.org/all/[email protected]/T/
--- fs/f2fs/inode.c | 6 ++++++ 1 file changed, 6 insertions(+)
fs/f2fs/inode.c +6 -0
@@ -372,6 +372,12 @@ static bool sanity_check_inode(struct inode *inode, struct page *node_page)return false; } +if (inode->i_nlink ==0 ) { +f2fs_warn (sbi,"%s: inode (ino=%lx) has a link count of 0" , + __func__, inode->i_ino); +return false; + } +return true; }
Signature · 1 line
2.43.0
Quoted 10 lines · Leo Stone
The syzbot reproducer mounts a f2fs image, then tries to unlink an existing file. However, the unlinked file already has a link count of 0 when it is read for the first time in
do_read_inode().Add a check to
sanity_check_inode()fori_nlink== 0.Reported-by [email protected]Fixes 39a53e0ce0df ("f2fs: add superblock and major in-memory structure")Signed-off-by Leo Stone <[email protected]>
Reviewed-by Chao Yu <[email protected]>
Thanks,