[PATCH v4 0/2] f2fs: Add sanity checks before unlinking and loading inodes

From: Nikola Z. Ivanov

Date: Wed Nov 05 2025 - 06:09:57 EST


This series is provoked by syzbot warnings caused by corrupted directory
inode with i_nlink == 1 that passes the initial sanity check which will
only mark the filesystem as corrupted in case i_nlink == 0.

Tests:
- fio/fsmark parallel create/unlink on VM with f2fs root filesystem.
- syzbot

Changelog:
Changes from v1:
- Rename exit label in f2fs_unlink().
- Add sanity check in sanity_check_inode() and remove it from f2fs_iget()
as suggested by Chao Yu in order to detect on-disk corruption early.
https://lore.kernel.org/linux-f2fs-devel/d4b7c03c-6554-4407-b823-aecfcdf7dc3f@xxxxxxxxxx/T/#t

Changes from v2:
- Remove i_nlink == 0 check from sanity_check_inode.
- Wrap i_nlink == 1 in unlikely() marco.
https://lore.kernel.org/linux-f2fs-devel/1f519357-a489-41fe-8159-a8e319aedd17@xxxxxxxxxx/T/#u

Changes from v3:
- Replace F2FS_I_SB(inode) with already obtained f2fs_sb_info pointer.
https://lore.kernel.org/linux-f2fs-devel/4de88613-54a2-4ef3-9b56-7963cd3e42e6@xxxxxxxxxx/T/#u

Nikola Z. Ivanov (2):
f2fs: Rename f2fs_unlink exit label
f2fs: Add sanity checks before unlinking and loading inodes

fs/f2fs/inode.c | 6 ++++++
fs/f2fs/namei.c | 29 ++++++++++++++++++-----------
2 files changed, 24 insertions(+), 11 deletions(-)

--
2.51.0