Chao Yu
54162974ae
f2fs: fix to don't dirty inode for readonly filesystem
commit 192b8fb8d1c8ca3c87366ebbef599fa80bb626b8 upstream.
syzbot reports f2fs bug as below:
kernel BUG at fs/f2fs/inode.c:933!
RIP: 0010:f2fs_evict_inode+0x1576/0x1590 fs/f2fs/inode.c:933
Call Trace:
evict+0x2a4/0x620 fs/inode.c:664
dispose_list fs/inode.c:697 [inline]
evict_inodes+0x5f8/0x690 fs/inode.c:747
generic_shutdown_super+0x9d/0x2c0 fs/super.c:675
kill_block_super+0x44/0x90 fs/super.c:1667
kill_f2fs_super+0x303/0x3b0 fs/f2fs/super.c:4894
deactivate_locked_super+0xc1/0x130 fs/super.c:484
cleanup_mnt+0x426/0x4c0 fs/namespace.c:1256
task_work_run+0x24a/0x300 kernel/task_work.c:180
ptrace_notify+0x2cd/0x380 kernel/signal.c:2399
ptrace_report_syscall include/linux/ptrace.h:411 [inline]
ptrace_report_syscall_exit include/linux/ptrace.h:473 [inline]
syscall_exit_work kernel/entry/common.c:251 [inline]
syscall_exit_to_user_mode_prepare kernel/entry/common.c:278 [inline]
__syscall_exit_to_user_mode_work kernel/entry/common.c:283 [inline]
syscall_exit_to_user_mode+0x15c/0x280 kernel/entry/common.c:296
do_syscall_64+0x50/0x110 arch/x86/entry/common.c:88
entry_SYSCALL_64_after_hwframe+0x63/0x6b
The root cause is:
- do_sys_open
- f2fs_lookup
- __f2fs_find_entry
- f2fs_i_depth_write
- f2fs_mark_inode_dirty_sync
- f2fs_dirty_inode
- set_inode_flag(inode, FI_DIRTY_INODE)
- umount
- kill_f2fs_super
- kill_block_super
- generic_shutdown_super
- sync_filesystem
: sb is readonly, skip sync_filesystem()
- evict_inodes
- iput
- f2fs_evict_inode
- f2fs_bug_on(sbi, is_inode_flag_set(inode, FI_DIRTY_INODE))
: trigger kernel panic
When we try to repair i_current_depth in readonly filesystem, let's
skip dirty inode to avoid panic in later f2fs_evict_inode().
Cc: stable@vger.kernel.org
Reported-by: syzbot+31e4659a3fe953aec2f4@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/linux-f2fs-devel/000000000000e890bc0609a55cff@google.com
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
2024-08-19 05:33:37 +02:00 |
| .. |
|
9p
|
fs/9p: drop inodes immediately on non-.L too
|
2024-05-17 11:43:53 +02:00 |
|
adfs
|
|
|
|
affs
|
affs: initialize fsdata in affs_truncate()
|
2023-02-06 07:52:36 +01:00 |
|
afs
|
afs: Don't cross .backup mountpoint from backup volume
|
2024-06-16 13:28:48 +02:00 |
|
autofs
|
autofs: fix memory leak of waitqueues in autofs_catatonic_mode
|
2023-09-23 11:00:02 +02:00 |
|
befs
|
|
|
|
bfs
|
|
|
|
btrfs
|
btrfs: add missing mutex_unlock in btrfs_relocate_sys_chunks()
|
2024-05-25 16:17:18 +02:00 |
|
cachefiles
|
cachefiles: fix memory leak in cachefiles_add_cache()
|
2024-03-06 14:36:10 +00:00 |
|
ceph
|
ceph: fix deadlock or deadcode of misusing dget()
|
2024-02-23 08:25:03 +01:00 |
|
cifs
|
smb: client: fix potential OOBs in smb2_parse_contexts()
|
2024-05-25 16:17:17 +02:00 |
|
coda
|
coda: Avoid partial allocation of sig_inputArgs
|
2023-03-11 16:43:56 +01:00 |
|
configfs
|
configfs: fix possible memory leak in configfs_create_dir()
|
2023-01-18 11:41:09 +01:00 |
|
cramfs
|
|
|
|
crypto
|
|
|
|
debugfs
|
new helper: lookup_positive_unlocked()
|
2023-09-23 10:59:40 +02:00 |
|
devpts
|
fsnotify: fix fsnotify hooks in pseudo filesystems
|
2022-02-01 17:24:34 +01:00 |
|
dlm
|
dlm: fix plock lookup when using multiple lockspaces
|
2023-09-23 10:59:55 +02:00 |
|
ecryptfs
|
ecryptfs: Fix buffer size for tag 66 packet
|
2024-06-16 13:28:32 +02:00 |
|
efivarfs
|
|
|
|
efs
|
|
|
|
erofs
|
erofs: ensure that the post-EOF tails are all zeroed
|
2023-09-23 10:59:36 +02:00 |
|
exportfs
|
|
|
|
ext2
|
ext2: fix datatype of block number in ext2_xattr_set2()
|
2023-09-23 11:00:04 +02:00 |
|
ext4
|
ext4: make sure the first directory block is not a hole
|
2024-08-19 05:33:36 +02:00 |
|
f2fs
|
f2fs: fix to don't dirty inode for readonly filesystem
|
2024-08-19 05:33:37 +02:00 |
|
fat
|
fat: fix uninitialized field in nostale filehandles
|
2024-04-13 12:51:23 +02:00 |
|
freevxfs
|
|
|
|
fscache
|
|
|
|
fuse
|
fuse: don't unhash root
|
2024-04-13 12:51:25 +02:00 |
|
gfs2
|
gfs2: Fix invalid metadata access in punch_hole
|
2024-05-17 11:43:50 +02:00 |
|
hfs
|
hfs: fix to initialize fields of hfs_inode_info after hfs_alloc_inode()
|
2024-08-19 05:33:36 +02:00 |
|
hfsplus
|
hfsplus: fix to avoid false alarm of circular locking
|
2024-08-19 05:33:25 +02:00 |
|
hostfs
|
|
|
|
hpfs
|
|
|
|
hugetlbfs
|
fs,hugetlb: fix NULL pointer dereference in hugetlbs_fill_super
|
2024-03-06 14:36:10 +00:00 |
|
iomap
|
iomap: Set all uptodate bits for an Uptodate page
|
2024-03-01 13:13:35 +01:00 |
|
isofs
|
isofs: handle CDs with bad root inode but good Joliet root directory
|
2024-04-13 12:51:38 +02:00 |
|
jbd2
|
jbd2: correct the printing of write_flags in jbd2_write_superblock()
|
2024-01-25 14:34:20 -08:00 |
|
jffs2
|
jffs2: Fix potential illegal address access in jffs2_free_inode
|
2024-07-18 11:40:49 +02:00 |
|
jfs
|
jfs: don't walk off the end of ealist
|
2024-07-27 10:38:33 +02:00 |
|
kernfs
|
fs/kernfs/dir: obey S_ISGID
|
2024-02-23 08:25:03 +01:00 |
|
lockd
|
fs: lockd: avoid possible wrong NULL parameter
|
2023-09-23 10:59:48 +02:00 |
|
minix
|
minix: fix bug when opening a file with O_DIRECT
|
2022-04-15 14:18:35 +02:00 |
|
nfs
|
nfs: Leave pages in the pagecache if readpage failed
|
2024-07-05 09:08:32 +02:00 |
|
nfs_common
|
|
|
|
nfsd
|
nfsd: fix file memleak on client_opens_release
|
2023-11-28 16:50:21 +00:00 |
|
nilfs2
|
nilfs2: avoid undefined behavior in nilfs_cnt32_ge macro
|
2024-08-19 05:33:35 +02:00 |
|
nls
|
fs/nls: make load_nls() take a const parameter
|
2023-09-23 10:59:38 +02:00 |
|
notify
|
fanotify: disallow mount/sb marks on kernel internal pseudo fs
|
2023-07-27 08:37:26 +02:00 |
|
ntfs
|
ntfs: check overflow when iterating ATTR_RECORDs
|
2022-11-25 17:42:22 +01:00 |
|
ocfs2
|
ocfs2: add bounds checking to ocfs2_check_dir_entry()
|
2024-07-27 10:38:33 +02:00 |
|
omfs
|
treewide: Remove uninitialized_var() usage
|
2023-06-09 10:29:01 +02:00 |
|
openpromfs
|
openpromfs: finish conversion to the new mount API
|
2024-06-16 13:28:32 +02:00 |
|
orangefs
|
orangefs: fix out-of-bounds fsid access
|
2024-07-18 11:40:49 +02:00 |
|
overlayfs
|
ovl: skip overlayfs superblocks at global sync
|
2023-12-08 08:44:27 +01:00 |
|
proc
|
fs/proc: fix softlockup in __read_vmcore
|
2024-07-05 09:08:18 +02:00 |
|
pstore
|
pstore/ram: Fix crash when setting number of cpus to an odd number
|
2024-02-23 08:24:55 +01:00 |
|
qnx4
|
|
|
|
qnx6
|
|
|
|
quota
|
quota: Fix rcu annotations of inode dquot pointers
|
2024-03-26 18:22:20 -04:00 |
|
ramfs
|
|
|
|
reiserfs
|
reiserfs: Check the return value from __getblk()
|
2023-09-23 10:59:40 +02:00 |
|
romfs
|
|
|
|
squashfs
|
revert "squashfs: harden sanity check in squashfs_read_xattr_id_table"
|
2023-02-22 12:50:39 +01:00 |
|
sysfs
|
fs: sysfs: Fix reference leak in sysfs_break_active_protection()
|
2024-05-02 16:18:32 +02:00 |
|
sysv
|
sysv: don't call sb_bread() with pointers_lock held
|
2024-04-13 12:51:38 +02:00 |
|
tracefs
|
tracefs: Add missing lockdown check to tracefs_create_dir()
|
2023-09-23 11:00:06 +02:00 |
|
ubifs
|
ubifs: Set page uptodate in the correct place
|
2024-04-13 12:51:23 +02:00 |
|
udf
|
udf: Avoid using corrupted block bitmap buffer
|
2024-08-19 05:33:36 +02:00 |
|
ufs
|
|
|
|
unicode
|
|
|
|
verity
|
fsverity: skip PKCS#7 parser when keyring is empty
|
2023-09-23 10:59:55 +02:00 |
|
xfs
|
xfs: verify buffer contents when we skip log replay
|
2023-06-28 10:18:42 +02:00 |
|
aio.c
|
fs/aio: Check IOCB_AIO_RW before the struct aio_kiocb conversion
|
2024-04-13 12:51:29 +02:00 |
|
anon_inodes.c
|
|
|
|
attr.c
|
attr: block mode changes of symlinks
|
2023-09-23 11:00:06 +02:00 |
|
bad_inode.c
|
|
|
|
binfmt_aout.c
|
binfmt: Move install_exec_creds after setup_new_exec to match binfmt_elf
|
2023-01-18 11:41:46 +01:00 |
|
binfmt_elf.c
|
|
|
|
binfmt_elf_fdpic.c
|
fs: binfmt_elf_efpic: fix personality for ELF-FDPIC
|
2023-10-10 21:46:42 +02:00 |
|
binfmt_em86.c
|
|
|
|
binfmt_flat.c
|
binfmt: Move install_exec_creds after setup_new_exec to match binfmt_elf
|
2023-01-18 11:41:46 +01:00 |
|
binfmt_misc.c
|
binfmt_misc: fix shift-out-of-bounds in check_special_flags
|
2023-01-18 11:41:33 +01:00 |
|
binfmt_script.c
|
|
|
|
block_dev.c
|
block: Don't invalidate pagecache for invalid falloc modes
|
2024-01-08 11:29:48 +01:00 |
|
buffer.c
|
mm: fs: initialize fsdata passed to write_begin/write_end interface
|
2022-11-25 17:42:22 +01:00 |
|
char_dev.c
|
chardev: fix error handling in cdev_device_add()
|
2023-01-18 11:41:25 +01:00 |
|
compat.c
|
|
|
|
compat_binfmt_elf.c
|
|
|
|
compat_ioctl.c
|
lsm: new security_file_ioctl_compat() hook
|
2024-02-23 08:25:15 +01:00 |
|
coredump.c
|
|
|
|
d_path.c
|
|
|
|
dax.c
|
dax: fix cache flush on PMD-mapped pages
|
2022-06-14 18:11:41 +02:00 |
|
dcache.c
|
fs: better handle deep ancestor chains in is_subdir()
|
2024-07-27 10:38:32 +02:00 |
|
dcookies.c
|
|
|
|
direct-io.c
|
|
|
|
drop_caches.c
|
|
|
|
eventfd.c
|
eventfd: prevent underflow for eventfd semaphores
|
2023-09-23 10:59:40 +02:00 |
|
eventpoll.c
|
epoll: ep_autoremove_wake_function should use list_del_init_careful
|
2023-06-28 10:18:35 +02:00 |
|
exec.c
|
exec: Fix NOMMU linux_binprm::exec in transfer_args_to_stack()
|
2024-04-13 12:51:31 +02:00 |
|
fcntl.c
|
|
|
|
fhandle.c
|
do_sys_name_to_handle(): use kzalloc() to fix kernel-infoleak
|
2024-03-26 18:22:13 -04:00 |
|
file.c
|
fs/file: fix the check in find_next_fd()
|
2024-07-27 10:38:29 +02:00 |
|
file_table.c
|
SUNRPC: Ensure we flush any closed sockets before xs_xprt_free()
|
2022-05-25 09:14:34 +02:00 |
|
filesystems.c
|
|
|
|
fs-writeback.c
|
writeback: fix call of incorrect macro
|
2023-05-17 11:35:58 +02:00 |
|
fs_context.c
|
fs: avoid empty option when generating legacy mount string
|
2023-07-27 08:37:25 +02:00 |
|
fs_parser.c
|
|
|
|
fs_pin.c
|
|
|
|
fs_struct.c
|
|
|
|
fs_types.c
|
|
|
|
fsopen.c
|
|
|
|
inode.c
|
fs: move S_ISGID stripping into the vfs_*() helpers
|
2024-02-23 08:24:49 +01:00 |
|
internal.h
|
fs: Establish locking order for unrelated directories
|
2023-07-27 08:37:26 +02:00 |
|
io_uring.c
|
io_uring: fail NOP if non-zero op flags is passed in
|
2024-06-16 13:28:48 +02:00 |
|
ioctl.c
|
|
|
|
Kconfig
|
|
|
|
Kconfig.binfmt
|
|
|
|
libfs.c
|
libfs: add DEFINE_SIMPLE_ATTRIBUTE_SIGNED for signed value
|
2023-01-18 11:40:55 +01:00 |
|
locks.c
|
filelock: Fix fcntl/close race recovery compat path
|
2024-07-27 10:38:33 +02:00 |
|
Makefile
|
|
|
|
mbcache.c
|
mbcache: Avoid nesting of cache->c_list_lock under bit locks
|
2023-01-18 11:41:59 +01:00 |
|
mount.h
|
|
|
|
mpage.c
|
|
|
|
namei.c
|
fs: move S_ISGID stripping into the vfs_*() helpers
|
2024-02-23 08:24:49 +01:00 |
|
namespace.c
|
|
|
|
no-block.c
|
|
|
|
nsfs.c
|
|
|
|
open.c
|
ftruncate: pass a signed offset
|
2024-07-05 09:08:31 +02:00 |
|
pipe.c
|
|
|
|
pnode.c
|
pnode: terminate at peers of source
|
2023-01-18 11:41:44 +01:00 |
|
pnode.h
|
|
|
|
posix_acl.c
|
|
|
|
proc_namespace.c
|
|
|
|
read_write.c
|
|
|
|
readdir.c
|
|
|
|
select.c
|
fs/select: rework stack allocation hack for clang
|
2024-03-26 18:22:13 -04:00 |
|
seq_file.c
|
|
|
|
signalfd.c
|
io_uring: disable polling pollfree files
|
2022-09-05 10:27:47 +02:00 |
|
splice.c
|
Revert "fs: check FMODE_LSEEK to control internal pipe splicing"
|
2022-10-17 17:24:32 +02:00 |
|
stack.c
|
|
|
|
stat.c
|
stat: fix inconsistency between struct stat and struct compat_stat
|
2022-04-27 13:50:48 +02:00 |
|
statfs.c
|
statfs: enforce statfs[64] structure initialization
|
2023-05-30 12:44:07 +01:00 |
|
super.c
|
fs: Protect reconfiguration of sb read-write from racing writes
|
2023-08-11 11:53:59 +02:00 |
|
sync.c
|
ovl: skip overlayfs superblocks at global sync
|
2023-12-08 08:44:27 +01:00 |
|
timerfd.c
|
|
|
|
userfaultfd.c
|
userfaultfd: open userfaultfds with O_RDONLY
|
2022-10-26 13:22:21 +02:00 |
|
utimes.c
|
|
|
|
xattr.c
|
fs: don't audit the capability check in simple_xattr_list()
|
2023-01-18 11:40:53 +01:00 |