Message ID | 20250227155420.48885-1-chao@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 81edb983b3f5d6900d3e337b9af7b1bec4bef0f2 |
Headers | show |
Series | [f2fs-dev,v5] f2fs: add check for deleted inode | expand |
Hello: This patch was applied to jaegeuk/f2fs.git (dev) by Jaegeuk Kim <jaegeuk@kernel.org>: On Thu, 27 Feb 2025 23:54:20 +0800 you wrote: > From: Leo Stone <leocstone@gmail.com> > > 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. > > [...] Here is the summary with links: - [f2fs-dev,v5] f2fs: add check for deleted inode https://git.kernel.org/jaegeuk/f2fs/c/81edb983b3f5 You are awesome, thank you!
diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c index 949621bc0d07..e39533482b45 100644 --- a/fs/f2fs/namei.c +++ b/fs/f2fs/namei.c @@ -502,6 +502,14 @@ static struct dentry *f2fs_lookup(struct inode *dir, struct dentry *dentry, goto out; } + if (inode->i_nlink == 0) { + f2fs_warn(F2FS_I_SB(inode), "%s: inode (ino=%lx) has zero i_nlink", + __func__, inode->i_ino); + err = -EFSCORRUPTED; + set_sbi_flag(F2FS_I_SB(inode), SBI_NEED_FSCK); + goto out_iput; + } + if (IS_ENCRYPTED(dir) && (S_ISDIR(inode->i_mode) || S_ISLNK(inode->i_mode)) && !fscrypt_has_permitted_context(dir, inode)) {