====================================================== WARNING: possible circular locking dependency detected syzkaller #0 Not tainted ------------------------------------------------------ syz.5.296/6100 is trying to acquire lock: ffff0000fbe74da0 (&oi->ip_alloc_sem){++++}-{3:3}, at: ocfs2_try_remove_refcount_tree+0xb4/0x2e4 fs/ocfs2/refcounttree.c:932 but task is already holding lock: ffff0000fbe74e38 (&oi->ip_xattr_sem){++++}-{3:3}, at: ocfs2_try_remove_refcount_tree+0xa8/0x2e4 fs/ocfs2/refcounttree.c:931 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #3 (&oi->ip_xattr_sem){++++}-{3:3}: down_read+0x64/0x300 kernel/locking/rwsem.c:1520 ocfs2_init_acl+0x264/0x61c fs/ocfs2/acl.c:365 ocfs2_mknod+0x129c/0x2110 fs/ocfs2/namei.c:410 ocfs2_create+0x19c/0x4f8 fs/ocfs2/namei.c:674 lookup_open fs/namei.c:3490 [inline] open_last_lookups fs/namei.c:3558 [inline] path_openat+0xe18/0x26bc fs/namei.c:3788 do_filp_open+0x194/0x384 fs/namei.c:3818 do_sys_openat2+0x134/0x3f4 fs/open.c:1320 do_sys_open fs/open.c:1336 [inline] __do_sys_openat fs/open.c:1352 [inline] __se_sys_openat fs/open.c:1347 [inline] __arm64_sys_openat+0x118/0x14c fs/open.c:1347 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline] invoke_syscall+0x98/0x2b4 arch/arm64/kernel/syscall.c:52 el0_svc_common+0x138/0x258 arch/arm64/kernel/syscall.c:140 do_el0_svc+0x58/0x130 arch/arm64/kernel/syscall.c:204 el0_svc+0x58/0x128 arch/arm64/kernel/entry-common.c:637 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:585 -> #2 (&journal->j_trans_barrier){.+.+}-{3:3}: down_read+0x64/0x300 kernel/locking/rwsem.c:1520 ocfs2_start_trans+0x374/0x6cc fs/ocfs2/journal.c:374 ocfs2_local_alloc_slide_window fs/ocfs2/localalloc.c:1258 [inline] ocfs2_reserve_local_alloc_bits+0xb48/0x26c8 fs/ocfs2/localalloc.c:668 ocfs2_reserve_clusters_with_limit+0x188/0xa28 fs/ocfs2/suballoc.c:1162 ocfs2_reserve_clusters+0x3c/0x50 fs/ocfs2/suballoc.c:1223 ocfs2_mknod+0xcc8/0x2110 fs/ocfs2/namei.c:354 ocfs2_mkdir+0x19c/0x4f8 fs/ocfs2/namei.c:657 vfs_mkdir+0x314/0x4d4 fs/namei.c:4114 do_mkdirat+0x1b8/0x3ec fs/namei.c:4139 __do_sys_mkdirat fs/namei.c:4154 [inline] __se_sys_mkdirat fs/namei.c:4152 [inline] __arm64_sys_mkdirat+0x90/0xa8 fs/namei.c:4152 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline] invoke_syscall+0x98/0x2b4 arch/arm64/kernel/syscall.c:52 el0_svc_common+0x138/0x258 arch/arm64/kernel/syscall.c:140 do_el0_svc+0x58/0x130 arch/arm64/kernel/syscall.c:204 el0_svc+0x58/0x128 arch/arm64/kernel/entry-common.c:637 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:585 -> #1 (sb_internal#4){.+.+}-{0:0}: percpu_down_read include/linux/percpu-rwsem.h:51 [inline] __sb_start_write include/linux/fs.h:1891 [inline] sb_start_intwrite include/linux/fs.h:2013 [inline] ocfs2_start_trans+0x20c/0x6cc fs/ocfs2/journal.c:372 ocfs2_setattr+0xb00/0x1930 fs/ocfs2/file.c:1263 notify_change+0xb0c/0xdcc fs/attr.c:499 ovl_do_notify_change fs/overlayfs/overlayfs.h:142 [inline] ovl_workdir_create+0x4bc/0x658 fs/overlayfs/super.c:833 ovl_make_workdir fs/overlayfs/super.c:1389 [inline] ovl_get_workdir+0x318/0x10bc fs/overlayfs/super.c:1539 ovl_fill_super+0x1390/0x2240 fs/overlayfs/super.c:2095 mount_nodev+0x68/0x104 fs/super.c:1489 ovl_mount+0x3c/0x50 fs/overlayfs/super.c:2186 legacy_get_tree+0xd4/0x16c fs/fs_context.c:632 vfs_get_tree+0x90/0x274 fs/super.c:1573 do_new_mount+0x228/0x810 fs/namespace.c:3078 path_mount+0x5bc/0xe80 fs/namespace.c:3408 do_mount fs/namespace.c:3421 [inline] __do_sys_mount fs/namespace.c:3629 [inline] __se_sys_mount fs/namespace.c:3606 [inline] __arm64_sys_mount+0x49c/0x59c fs/namespace.c:3606 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline] invoke_syscall+0x98/0x2b4 arch/arm64/kernel/syscall.c:52 el0_svc_common+0x138/0x258 arch/arm64/kernel/syscall.c:140 do_el0_svc+0x58/0x130 arch/arm64/kernel/syscall.c:204 el0_svc+0x58/0x128 arch/arm64/kernel/entry-common.c:637 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:585 -> #0 (&oi->ip_alloc_sem){++++}-{3:3}: check_prev_add kernel/locking/lockdep.c:3090 [inline] check_prevs_add kernel/locking/lockdep.c:3209 [inline] validate_chain kernel/locking/lockdep.c:3825 [inline] __lock_acquire+0x2880/0x6800 kernel/locking/lockdep.c:5049 lock_acquire+0x20c/0x63c kernel/locking/lockdep.c:5662 down_write+0x5c/0x88 kernel/locking/rwsem.c:1573 ocfs2_try_remove_refcount_tree+0xb4/0x2e4 fs/ocfs2/refcounttree.c:932 ocfs2_truncate_file+0xd24/0x14f8 fs/ocfs2/file.c:517 ocfs2_setattr+0x1288/0x1930 fs/ocfs2/file.c:1212 notify_change+0xb0c/0xdcc fs/attr.c:499 do_truncate+0x188/0x20c fs/open.c:65 do_coredump+0x196c/0x1c68 fs/coredump.c:801 get_signal+0xdec/0x1304 kernel/signal.c:2857 do_signal arch/arm64/kernel/signal.c:1095 [inline] do_notify_resume+0x28c/0x2aa4 arch/arm64/kernel/signal.c:1148 prepare_exit_to_user_mode arch/arm64/kernel/entry-common.c:137 [inline] exit_to_user_mode arch/arm64/kernel/entry-common.c:142 [inline] el0_da+0xb4/0x144 arch/arm64/kernel/entry-common.c:516 el0t_64_sync_handler+0x90/0xf0 arch/arm64/kernel/entry-common.c:658 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:585 other info that might help us debug this: Chain exists of: &oi->ip_alloc_sem --> &journal->j_trans_barrier --> &oi->ip_xattr_sem Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&oi->ip_xattr_sem); lock(&journal->j_trans_barrier); lock(&oi->ip_xattr_sem); lock(&oi->ip_alloc_sem); *** DEADLOCK *** 2 locks held by syz.5.296/6100: #0: ffff0000fbe75108 (&sb->s_type->i_mutex_key#28){+.+.}-{3:3}, at: inode_lock include/linux/fs.h:758 [inline] #0: ffff0000fbe75108 (&sb->s_type->i_mutex_key#28){+.+.}-{3:3}, at: do_truncate+0x174/0x20c fs/open.c:63 #1: ffff0000fbe74e38 (&oi->ip_xattr_sem){++++}-{3:3}, at: ocfs2_try_remove_refcount_tree+0xa8/0x2e4 fs/ocfs2/refcounttree.c:931 stack backtrace: CPU: 0 PID: 6100 Comm: syz.5.296 Not tainted syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/26/2026 Call trace: dump_backtrace+0x1c0/0x1ec arch/arm64/kernel/stacktrace.c:158 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:165 __dump_stack+0x30/0x40 lib/dump_stack.c:88 dump_stack_lvl+0xf4/0x15c lib/dump_stack.c:106 dump_stack+0x1c/0x5c lib/dump_stack.c:113 print_circular_bug+0x148/0x1b0 kernel/locking/lockdep.c:2048 check_noncircular+0x264/0x2f8 kernel/locking/lockdep.c:2170 check_prev_add kernel/locking/lockdep.c:3090 [inline] check_prevs_add kernel/locking/lockdep.c:3209 [inline] validate_chain kernel/locking/lockdep.c:3825 [inline] __lock_acquire+0x2880/0x6800 kernel/locking/lockdep.c:5049 lock_acquire+0x20c/0x63c kernel/locking/lockdep.c:5662 down_write+0x5c/0x88 kernel/locking/rwsem.c:1573 ocfs2_try_remove_refcount_tree+0xb4/0x2e4 fs/ocfs2/refcounttree.c:932 ocfs2_truncate_file+0xd24/0x14f8 fs/ocfs2/file.c:517 ocfs2_setattr+0x1288/0x1930 fs/ocfs2/file.c:1212 notify_change+0xb0c/0xdcc fs/attr.c:499 do_truncate+0x188/0x20c fs/open.c:65 do_coredump+0x196c/0x1c68 fs/coredump.c:801 get_signal+0xdec/0x1304 kernel/signal.c:2857 do_signal arch/arm64/kernel/signal.c:1095 [inline] do_notify_resume+0x28c/0x2aa4 arch/arm64/kernel/signal.c:1148 prepare_exit_to_user_mode arch/arm64/kernel/entry-common.c:137 [inline] exit_to_user_mode arch/arm64/kernel/entry-common.c:142 [inline] el0_da+0xb4/0x144 arch/arm64/kernel/entry-common.c:516 el0t_64_sync_handler+0x90/0xf0 arch/arm64/kernel/entry-common.c:658 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:585 OCFS2: ERROR (device loop5): int ocfs2_validate_gd_self(struct super_block *, struct buffer_head *, int): Group descriptor #32 has an invalid fs_generation of #1 On-disk corruption discovered. Please run fsck.ocfs2 once the filesystem is unmounted. OCFS2: File system is now read-only. (syz.5.296,6100,1):ocfs2_search_chain:1761 ERROR: status = -30 (syz.5.296,6100,1):ocfs2_search_chain:1871 ERROR: status = -30 (syz.5.296,6100,1):ocfs2_claim_suballoc_bits:1950 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_claim_suballoc_bits:1993 ERROR: status = -30 (syz.5.296,6100,0):__ocfs2_claim_clusters:2365 ERROR: status = -30 (syz.5.296,6100,0):__ocfs2_claim_clusters:2373 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_local_alloc_new_window:1203 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_local_alloc_new_window:1228 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_local_alloc_slide_window:1302 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_local_alloc_slide_window:1321 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_reserve_local_alloc_bits:671 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_reserve_local_alloc_bits:709 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_reserve_clusters_with_limit:1166 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_reserve_clusters_with_limit:1215 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_lock_allocators:2682 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_extend_allocation:588 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_extend_no_holes:1030 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_expand_nonsparse_inode:1623 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_write_begin_nolock:1690 ERROR: status = -30 (syz.5.296,6100,0):ocfs2_write_begin:1907 ERROR: status = -30