syzbot


possible deadlock in ocfs2_lock_refcount_tree (2)

Status: upstream: reported on 2026/05/11 00:20
Reported-by: syzbot+1698551c43bd8a774aa5@syzkaller.appspotmail.com
First crash: 59d, last: 12d
Similar bugs (8)
Kernel Title Rank 🛈 Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream possible deadlock in ocfs2_lock_refcount_tree (4) prio:high ocfs2 4 20 24d 75d 0/29 upstream: reported on 2026/04/24 03:20
linux-5.15 possible deadlock in ocfs2_lock_refcount_tree 4 58 303d 662d 0/3 auto-obsoleted due to no activity on 2025/12/04 20:56
linux-5.15 possible deadlock in ocfs2_lock_refcount_tree (3) 4 2 12d 37d 0/3 upstream: reported on 2026/06/01 02:21
upstream possible deadlock in ocfs2_lock_refcount_tree (3) ocfs2 4 1 292d 288d 0/29 auto-obsoleted due to no activity on 2025/12/28 08:20
linux-6.1 possible deadlock in ocfs2_lock_refcount_tree 4 97 166d 604d 0/3 auto-obsoleted due to no activity on 2026/04/03 15:33
upstream possible deadlock in ocfs2_lock_refcount_tree ocfs2 4 5 653d 670d 0/29 auto-obsoleted due to no activity on 2025/01/01 02:27
upstream possible deadlock in ocfs2_lock_refcount_tree (2) ocfs2 4 5 497d 545d 0/29 auto-obsoleted due to no activity on 2025/06/06 14:54
linux-5.15 possible deadlock in ocfs2_lock_refcount_tree (2) 4 3 184d 203d 0/3 auto-obsoleted due to no activity on 2026/04/15 05:38

Sample crash report:
======================================================
WARNING: possible circular locking dependency detected
syzkaller #0 Not tainted
------------------------------------------------------
syz.3.54/4687 is trying to acquire lock:
ffff88801ebf4898 (&new->rf_sem){+.+.}-{3:3}, at: __ocfs2_lock_refcount_tree fs/ocfs2/refcounttree.c:428 [inline]
ffff88801ebf4898 (&new->rf_sem){+.+.}-{3:3}, at: ocfs2_lock_refcount_tree+0x1aa/0x9d0 fs/ocfs2/refcounttree.c:463

but task is already holding lock:
ffff8880705ba648 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]){+.+.}-{3:3}, at: inode_lock include/linux/fs.h:758 [inline]
ffff8880705ba648 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]){+.+.}-{3:3}, at: ocfs2_wipe_inode fs/ocfs2/inode.c:776 [inline]
ffff8880705ba648 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]){+.+.}-{3:3}, at: ocfs2_delete_inode fs/ocfs2/inode.c:1079 [inline]
ffff8880705ba648 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]){+.+.}-{3:3}, at: ocfs2_evict_inode+0x2e6e/0x45e0 fs/ocfs2/inode.c:1219

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #2 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]){+.+.}-{3:3}:
       down_write+0x36/0x60 kernel/locking/rwsem.c:1573
       inode_lock include/linux/fs.h:758 [inline]
       ocfs2_del_inode_from_orphan+0x12b/0x7b0 fs/ocfs2/namei.c:2713
       ocfs2_dio_end_io_write fs/ocfs2/aops.c:2407 [inline]
       ocfs2_dio_end_io+0x1074/0x13f0 fs/ocfs2/aops.c:2446
       dio_complete+0x249/0x710 fs/direct-io.c:271
       __blockdev_direct_IO+0x2e15/0x34c0 fs/direct-io.c:1320
       ocfs2_direct_IO+0x233/0x2a0 fs/ocfs2/aops.c:2483
       generic_file_direct_write+0x112/0x330 mm/filemap.c:3787
       __generic_file_write_iter+0x15f/0x2a0 mm/filemap.c:3945
       ocfs2_file_write_iter+0x1731/0x1fc0 fs/ocfs2/file.c:2469
       do_iter_readv_writev fs/read_write.c:-1 [inline]
       do_iter_write+0x638/0xb10 fs/read_write.c:861
       vfs_writev fs/read_write.c:934 [inline]
       do_pwritev+0x23e/0x3a0 fs/read_write.c:1031
       do_syscall_x64 arch/x86/entry/common.c:46 [inline]
       do_syscall_64+0x4c/0xa0 arch/x86/entry/common.c:76
       entry_SYSCALL_64_after_hwframe+0x68/0xd2

-> #1 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]#3){+.+.}-{3:3}:
       down_write+0x36/0x60 kernel/locking/rwsem.c:1573
       inode_lock include/linux/fs.h:758 [inline]
       ocfs2_reserve_suballoc_bits+0x16a/0x4810 fs/ocfs2/suballoc.c:782
       ocfs2_reserve_new_metadata_blocks+0x412/0x9a0 fs/ocfs2/suballoc.c:978
       ocfs2_add_refcount_flag+0x398/0xf10 fs/ocfs2/refcounttree.c:3683
       ocfs2_reflink_remap_extent fs/ocfs2/refcounttree.c:4563 [inline]
       ocfs2_reflink_remap_blocks+0xd66/0x1aa0 fs/ocfs2/refcounttree.c:4690
       ocfs2_remap_file_range+0x4a7/0x740 fs/ocfs2/file.c:2703
       do_clone_file_range+0x265/0x2d0 fs/remap_range.c:396
       vfs_clone_file_range+0x1ec/0x4f0 fs/remap_range.c:414
       ioctl_file_clone fs/ioctl.c:239 [inline]
       ioctl_file_clone_range fs/ioctl.c:258 [inline]
       do_vfs_ioctl+0xe8d/0x1d40 fs/ioctl.c:823
       __do_sys_ioctl fs/ioctl.c:868 [inline]
       __se_sys_ioctl+0x83/0x170 fs/ioctl.c:856
       do_syscall_x64 arch/x86/entry/common.c:46 [inline]
       do_syscall_64+0x4c/0xa0 arch/x86/entry/common.c:76
       entry_SYSCALL_64_after_hwframe+0x68/0xd2

-> #0 (&new->rf_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+0x2c92/0x7bd0 kernel/locking/lockdep.c:5049
       lock_acquire+0x1bb/0x4a0 kernel/locking/lockdep.c:5662
       down_write+0x36/0x60 kernel/locking/rwsem.c:1573
       __ocfs2_lock_refcount_tree fs/ocfs2/refcounttree.c:428 [inline]
       ocfs2_lock_refcount_tree+0x1aa/0x9d0 fs/ocfs2/refcounttree.c:463
       ocfs2_commit_truncate+0xb49/0x1e00 fs/ocfs2/alloc.c:7345
       ocfs2_truncate_for_delete fs/ocfs2/inode.c:623 [inline]
       ocfs2_wipe_inode fs/ocfs2/inode.c:790 [inline]
       ocfs2_delete_inode fs/ocfs2/inode.c:1079 [inline]
       ocfs2_evict_inode+0x19f6/0x45e0 fs/ocfs2/inode.c:1219
       evict+0x4b6/0x8b0 fs/inode.c:705
       ocfs2_dentry_iput+0x24a/0x390 fs/ocfs2/dcache.c:418
       __dentry_kill+0x412/0x630 fs/dcache.c:611
       dentry_kill+0xb8/0x290 fs/dcache.c:-1
       dput+0xfa/0x1d0 fs/dcache.c:918
       __fput+0x597/0x8b0 fs/file_table.c:328
       task_work_run+0x1d0/0x260 kernel/task_work.c:203
       resume_user_mode_work include/linux/resume_user_mode.h:49 [inline]
       exit_to_user_mode_loop+0xe6/0x110 kernel/entry/common.c:177
       exit_to_user_mode_prepare+0xee/0x180 kernel/entry/common.c:210
       __syscall_exit_to_user_mode_work kernel/entry/common.c:292 [inline]
       syscall_exit_to_user_mode+0x16/0x40 kernel/entry/common.c:303
       do_syscall_64+0x58/0xa0 arch/x86/entry/common.c:82
       entry_SYSCALL_64_after_hwframe+0x68/0xd2

other info that might help us debug this:

Chain exists of:
  &new->rf_sem --> &ocfs2_sysfile_lock_key[args->fi_sysfile_type]#3 --> &ocfs2_sysfile_lock_key[args->fi_sysfile_type]

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&ocfs2_sysfile_lock_key[args->fi_sysfile_type]);
                               lock(&ocfs2_sysfile_lock_key[args->fi_sysfile_type]#3);
                               lock(&ocfs2_sysfile_lock_key[args->fi_sysfile_type]);
  lock(&new->rf_sem);

 *** DEADLOCK ***

2 locks held by syz.3.54/4687:
 #0: ffff88807ae8cab0 (&osb->nfs_sync_rwlock){.+.+}-{3:3}, at: ocfs2_nfs_sync_lock+0x103/0x270 fs/ocfs2/dlmglue.c:2874
 #1: ffff8880705ba648 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]){+.+.}-{3:3}, at: inode_lock include/linux/fs.h:758 [inline]
 #1: ffff8880705ba648 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]){+.+.}-{3:3}, at: ocfs2_wipe_inode fs/ocfs2/inode.c:776 [inline]
 #1: ffff8880705ba648 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]){+.+.}-{3:3}, at: ocfs2_delete_inode fs/ocfs2/inode.c:1079 [inline]
 #1: ffff8880705ba648 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]){+.+.}-{3:3}, at: ocfs2_evict_inode+0x2e6e/0x45e0 fs/ocfs2/inode.c:1219

stack backtrace:
CPU: 1 PID: 4687 Comm: syz.3.54 Not tainted syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/09/2026
Call Trace:
 <TASK>
 dump_stack_lvl+0x188/0x24e lib/dump_stack.c:106
 check_noncircular+0x296/0x330 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+0x2c92/0x7bd0 kernel/locking/lockdep.c:5049
 lock_acquire+0x1bb/0x4a0 kernel/locking/lockdep.c:5662
 down_write+0x36/0x60 kernel/locking/rwsem.c:1573
 __ocfs2_lock_refcount_tree fs/ocfs2/refcounttree.c:428 [inline]
 ocfs2_lock_refcount_tree+0x1aa/0x9d0 fs/ocfs2/refcounttree.c:463
 ocfs2_commit_truncate+0xb49/0x1e00 fs/ocfs2/alloc.c:7345
 ocfs2_truncate_for_delete fs/ocfs2/inode.c:623 [inline]
 ocfs2_wipe_inode fs/ocfs2/inode.c:790 [inline]
 ocfs2_delete_inode fs/ocfs2/inode.c:1079 [inline]
 ocfs2_evict_inode+0x19f6/0x45e0 fs/ocfs2/inode.c:1219
 evict+0x4b6/0x8b0 fs/inode.c:705
 ocfs2_dentry_iput+0x24a/0x390 fs/ocfs2/dcache.c:418
 __dentry_kill+0x412/0x630 fs/dcache.c:611
 dentry_kill+0xb8/0x290 fs/dcache.c:-1
 dput+0xfa/0x1d0 fs/dcache.c:918
 __fput+0x597/0x8b0 fs/file_table.c:328
 task_work_run+0x1d0/0x260 kernel/task_work.c:203
 resume_user_mode_work include/linux/resume_user_mode.h:49 [inline]
 exit_to_user_mode_loop+0xe6/0x110 kernel/entry/common.c:177
 exit_to_user_mode_prepare+0xee/0x180 kernel/entry/common.c:210
 __syscall_exit_to_user_mode_work kernel/entry/common.c:292 [inline]
 syscall_exit_to_user_mode+0x16/0x40 kernel/entry/common.c:303
 do_syscall_64+0x58/0xa0 arch/x86/entry/common.c:82
 entry_SYSCALL_64_after_hwframe+0x68/0xd2
RIP: 0033:0x7f069c19ce59
Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 e8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffe64be36a8 EFLAGS: 00000246 ORIG_RAX: 00000000000001b4
RAX: 0000000000000000 RBX: 00007ffe64be3790 RCX: 00007f069c19ce59
RDX: 0000000000000000 RSI: 000000000000001e RDI: 0000000000000003
RBP: 000000000001637f R08: 0000000000000001 R09: 0000000000000000
R10: 0000001b2ee20000 R11: 0000000000000246 R12: 00007ffe64be37d0
R13: 00007f069c415fac R14: 000000000001673f R15: 00007f069c415fa0
 </TASK>

Crashes (8):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/06/20 05:42 linux-6.1.y fdb6fcb41cc7 43bfcdb0 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_lock_refcount_tree
2026/06/26 02:38 linux-6.1.y fdb6fcb41cc7 7ff32d8b .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_lock_refcount_tree
2026/06/04 18:38 linux-6.1.y 228da13e907e 197909be .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_lock_refcount_tree
2026/06/04 18:30 linux-6.1.y 228da13e907e 197909be .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_lock_refcount_tree
2026/06/04 18:04 linux-6.1.y 228da13e907e 197909be .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_lock_refcount_tree
2026/06/04 18:02 linux-6.1.y 228da13e907e 197909be .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_lock_refcount_tree
2026/06/04 18:00 linux-6.1.y 228da13e907e 197909be .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_lock_refcount_tree
2026/05/11 00:20 linux-6.1.y 128a674368bf 29233ece .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_lock_refcount_tree
* Struck through repros no longer work on HEAD.