possible deadlock in ocfs2_read_virt_blocks

Status: upstream: reported C repro on 2025/01/01 05:39
Bug presence: origin:lts-only
[Documentation on labels]
Reported-by: syzbot+2efc8bd7a919b4f33cff@syzkaller.appspotmail.com
First crash: 651d, last: 1h17m
▶ ▼ Bug presence (2)
Date Name Commit Repro Result
2025/01/08 linux-6.1.y (ToT) 7dc732d24ff7 C [report] possible deadlock in ocfs2_read_virt_blocks
2025/01/08 upstream (ToT) 09a0fa92e5b4 C Didn't crash
▶ ▼ Similar bugs (2)
Kernel Title Rank 🛈 Repro Cause bisect Fix bisect Count Last Reported Patched Status
linux-5.15 possible deadlock in ocfs2_read_virt_blocks origin:lts-only 4 syz, C error 416 5d20h 660d 0/3 upstream: reported C repro on 2024/12/22 11:42
upstream possible deadlock in ocfs2_read_virt_blocks ocfs2 4 1 762d 761d 0/29 auto-obsoleted due to no activity on 2024/12/21 05:39
▶ ▼ Fix bisection attempts (1)
Created Duration User Patch Repo Result
2025/06/03 05:33 2h29m fix candidate upstream OK (0) job log

Sample crash report:
         option from the mount to silence this warning.
=======================================================
ocfs2: Slot 0 on device (7,0) was already allocated to this node!
JBD2: Ignoring recovery information on journal
ocfs2: Mounting device (7,0) on (node local, slot 0) with ordered data mode.
======================================================
WARNING: possible circular locking dependency detected
syzkaller #0 Not tainted
------------------------------------------------------
syz.0.17/4429 is trying to acquire lock:
ffff88806e3d8660 (&ocfs2_file_ip_alloc_sem_key){++++}-{3:3}, at: ocfs2_read_virt_blocks+0x266/0x980 fs/ocfs2/extent_map.c:984

but task is already holding lock:
ffff88807ca6f8e8 (&journal->j_trans_barrier){.+.+}-{3:3}, at: ocfs2_start_trans+0x3a4/0x6f0 fs/ocfs2/journal.c:374

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #3 (&journal->j_trans_barrier){.+.+}-{3:3}:
       down_read+0x42/0x2d0 kernel/locking/rwsem.c:1520
       ocfs2_start_trans+0x3a4/0x6f0 fs/ocfs2/journal.c:374
       ocfs2_local_alloc_slide_window fs/ocfs2/localalloc.c:1258 [inline]
       ocfs2_reserve_local_alloc_bits+0xaad/0x2770 fs/ocfs2/localalloc.c:668
       ocfs2_reserve_clusters_with_limit+0x1b6/0xc10 fs/ocfs2/suballoc.c:1184
       ocfs2_expand_inline_dir fs/ocfs2/dir.c:2855 [inline]
       ocfs2_extend_dir+0x77b/0x4c40 fs/ocfs2/dir.c:3200
       ocfs2_prepare_dir_for_insert+0x3217/0x5600 fs/ocfs2/dir.c:4321
       ocfs2_mknod+0xb92/0x2500 fs/ocfs2/namei.c:295
       ocfs2_mkdir+0x1b6/0x4b0 fs/ocfs2/namei.c:659
       vfs_mkdir+0x386/0x570 fs/namei.c:4157
       do_mkdirat+0x1d8/0x440 fs/namei.c:4182
       __do_sys_mkdirat fs/namei.c:4197 [inline]
       __se_sys_mkdirat fs/namei.c:4195 [inline]
       __x64_sys_mkdirat+0x85/0x90 fs/namei.c:4195
       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

-> #2 (sb_internal#2){.+.+}-{0:0}:
       percpu_down_read include/linux/percpu-rwsem.h:51 [inline]
       __sb_start_write include/linux/fs.h:1897 [inline]
       sb_start_intwrite include/linux/fs.h:2019 [inline]
       ocfs2_start_trans+0x2a5/0x6f0 fs/ocfs2/journal.c:372
       ocfs2_expand_inline_dir fs/ocfs2/dir.c:2868 [inline]
       ocfs2_extend_dir+0x107a/0x4c40 fs/ocfs2/dir.c:3200
       ocfs2_prepare_dir_for_insert+0x3217/0x5600 fs/ocfs2/dir.c:4321
       ocfs2_mknod+0xb92/0x2500 fs/ocfs2/namei.c:295
       ocfs2_mkdir+0x1b6/0x4b0 fs/ocfs2/namei.c:659
       vfs_mkdir+0x386/0x570 fs/namei.c:4157
       do_mkdirat+0x1d8/0x440 fs/namei.c:4182
       __do_sys_mkdirat fs/namei.c:4197 [inline]
       __se_sys_mkdirat fs/namei.c:4195 [inline]
       __x64_sys_mkdirat+0x85/0x90 fs/namei.c:4195
       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]#2){+.+.}-{3:3}:
       down_write+0x36/0x60 kernel/locking/rwsem.c:1573
       inode_lock include/linux/fs.h:764 [inline]
       ocfs2_reserve_local_alloc_bits+0x11e/0x2770 fs/ocfs2/localalloc.c:635
       ocfs2_reserve_clusters_with_limit+0x1b6/0xc10 fs/ocfs2/suballoc.c:1184
       ocfs2_expand_inline_dir fs/ocfs2/dir.c:2855 [inline]
       ocfs2_extend_dir+0x77b/0x4c40 fs/ocfs2/dir.c:3200
       ocfs2_prepare_dir_for_insert+0x3217/0x5600 fs/ocfs2/dir.c:4321
       ocfs2_mknod+0xb92/0x2500 fs/ocfs2/namei.c:295
       ocfs2_mkdir+0x1b6/0x4b0 fs/ocfs2/namei.c:659
       vfs_mkdir+0x386/0x570 fs/namei.c:4157
       do_mkdirat+0x1d8/0x440 fs/namei.c:4182
       __do_sys_mkdirat fs/namei.c:4197 [inline]
       __se_sys_mkdirat fs/namei.c:4195 [inline]
       __x64_sys_mkdirat+0x85/0x90 fs/namei.c:4195
       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 (&ocfs2_file_ip_alloc_sem_key){++++}-{3:3}:
       check_prev_add kernel/locking/lockdep.c:3162 [inline]
       check_prevs_add kernel/locking/lockdep.c:3281 [inline]
       validate_chain kernel/locking/lockdep.c:3897 [inline]
       __lock_acquire+0x3a03/0x7ea0 kernel/locking/lockdep.c:5171
       lock_acquire+0x1bc/0x4a0 kernel/locking/lockdep.c:5790
       down_read+0x42/0x2d0 kernel/locking/rwsem.c:1520
       ocfs2_read_virt_blocks+0x266/0x980 fs/ocfs2/extent_map.c:984
       ocfs2_read_dir_block fs/ocfs2/dir.c:508 [inline]
       ocfs2_find_entry_el fs/ocfs2/dir.c:715 [inline]
       ocfs2_find_entry+0x3a8/0x2080 fs/ocfs2/dir.c:1091
       ocfs2_rename+0x1e64/0x3930 fs/ocfs2/namei.c:1570
       vfs_rename+0xd57/0x10f0 fs/namei.c:4925
       do_renameat2+0x8ac/0xc80 fs/namei.c:5078
       __do_sys_rename fs/namei.c:5124 [inline]
       __se_sys_rename fs/namei.c:5122 [inline]
       __x64_sys_rename+0x82/0x90 fs/namei.c:5122
       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

other info that might help us debug this:

Chain exists of:
  &ocfs2_file_ip_alloc_sem_key --> sb_internal#2 --> &journal->j_trans_barrier

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  rlock(&journal->j_trans_barrier);
                               lock(sb_internal#2);
                               lock(&journal->j_trans_barrier);
  rlock(&ocfs2_file_ip_alloc_sem_key);

 *** DEADLOCK ***

5 locks held by syz.0.17/4429:
 #0: ffff88801a752460 (sb_writers#13){.+.+}-{0:0}, at: mnt_want_write+0x3d/0x90 fs/namespace.c:402
 #1: ffff88806e3d89c8 (&type->i_mutex_dir_key#8/1){+.+.}-{3:3}, at: lock_rename include/linux/fs.h:-1 [inline]
 #1: ffff88806e3d89c8 (&type->i_mutex_dir_key#8/1){+.+.}-{3:3}, at: do_renameat2+0x43c/0xc80 fs/namei.c:5017
 #2: ffff88801a752650 (sb_internal#2){.+.+}-{0:0}, at: ocfs2_rename+0x1a42/0x3930 fs/ocfs2/namei.c:1490
 #3: ffff88807ca6f8e8 (&journal->j_trans_barrier){.+.+}-{3:3}, at: ocfs2_start_trans+0x3a4/0x6f0 fs/ocfs2/journal.c:374
 #4: ffff888068866990 (jbd2_handle){++++}-{0:0}, at: start_this_handle+0x2014/0x2240 fs/jbd2/transaction.c:463

stack backtrace:
CPU: 0 PID: 4429 Comm: syz.0.17 Not tainted syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/16/2026
Call Trace:
 <TASK>
 dump_stack_lvl+0x188/0x24e lib/dump_stack.c:106
 check_noncircular+0x2f8/0x400 kernel/locking/lockdep.c:2215
 check_prev_add kernel/locking/lockdep.c:3162 [inline]
 check_prevs_add kernel/locking/lockdep.c:3281 [inline]
 validate_chain kernel/locking/lockdep.c:3897 [inline]
 __lock_acquire+0x3a03/0x7ea0 kernel/locking/lockdep.c:5171
 lock_acquire+0x1bc/0x4a0 kernel/locking/lockdep.c:5790
 down_read+0x42/0x2d0 kernel/locking/rwsem.c:1520
 ocfs2_read_virt_blocks+0x266/0x980 fs/ocfs2/extent_map.c:984
 ocfs2_read_dir_block fs/ocfs2/dir.c:508 [inline]
 ocfs2_find_entry_el fs/ocfs2/dir.c:715 [inline]
 ocfs2_find_entry+0x3a8/0x2080 fs/ocfs2/dir.c:1091
 ocfs2_rename+0x1e64/0x3930 fs/ocfs2/namei.c:1570
 vfs_rename+0xd57/0x10f0 fs/namei.c:4925
 do_renameat2+0x8ac/0xc80 fs/namei.c:5078
 __do_sys_rename fs/namei.c:5124 [inline]
 __se_sys_rename fs/namei.c:5122 [inline]
 __x64_sys_rename+0x82/0x90 fs/namei.c:5122
 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
RIP: 0033:0x7fc149d9e1d9
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:00007fff5cfeaf58 EFLAGS: 00000246 ORIG_RAX: 0000000000000052
RAX: ffffffffffffffda RBX: 00007fc14a025fa0 RCX: 00007fc149d9e1d9
RDX: 0000000000000000 RSI: 0000200000000400 RDI: 0000200000000f00
RBP: 00007fc149e35888 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007fc14a025fac R14: 00007fc14a025fa0 R15: 00007fc14a025fa0
 </TASK>
syz.0.17 (4429) used greatest stack depth: 19136 bytes left

Crashes (584):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/10/09 06:20 linux-6.1.y a500ba24937a b2734a59 .config console log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro (clean fs)] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2025/01/08 09:22 linux-6.1.y 7dc732d24ff7 f3558dbf .config console log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/10/08 17:59 linux-6.1.y a500ba24937a b2734a59 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/10/01 06:19 linux-6.1.y 1a8763b93150 38f7f0d1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/09/29 04:00 linux-6.1.y 1a8763b93150 7bf4ea23 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/09/27 07:00 linux-6.1.y 1a8763b93150 a3c7249d .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/09/09 00:31 linux-6.1.y cf82dcca9634 243b72f1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/09/04 03:39 linux-6.1.y cf82dcca9634 801f0966 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/09/04 03:38 linux-6.1.y cf82dcca9634 801f0966 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/09/01 00:03 linux-6.1.y d64a499eea6b 316d9396 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/08/31 10:11 linux-6.1.y d64a499eea6b 2f52988a .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/08/21 14:37 linux-6.1.y 7e6e67054721 1e72964b .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/08/11 23:07 linux-6.1.y e4f7d8be268e 71790083 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/08/04 08:28 linux-6.1.y fb28aa725e05 9451e17e .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/08/03 16:15 linux-6.1.y fb28aa725e05 6b7c9f71 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/08/03 16:15 linux-6.1.y fb28aa725e05 6b7c9f71 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/08/02 03:33 linux-6.1.y fb28aa725e05 e611ffe1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/08/01 01:17 linux-6.1.y fb28aa725e05 7664cf44 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/07/31 06:18 linux-6.1.y fb28aa725e05 aaffb173 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/07/26 21:45 linux-6.1.y dc5c83b7f5f8 492bab15 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/07/26 07:02 linux-6.1.y dc5c83b7f5f8 492bab15 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/07/25 21:49 linux-6.1.y dc5c83b7f5f8 492bab15 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/07/25 11:56 linux-6.1.y dc5c83b7f5f8 492bab15 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/07/22 05:58 linux-6.1.y 090666d3cc90 b561ce9c .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in ocfs2_read_virt_blocks
2026/10/14 07:08 linux-6.1.y a500ba24937a 7321cd29 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/10/12 10:01 linux-6.1.y a500ba24937a 4f92358f .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/10/10 17:41 linux-6.1.y a500ba24937a 4f92358f .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/09/21 09:03 linux-6.1.y 1a8763b93150 853b104b .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/09/19 05:30 linux-6.1.y 1a8763b93150 853b104b .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/09/13 08:01 linux-6.1.y cf82dcca9634 70a60e12 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/08/30 02:49 linux-6.1.y d64a499eea6b 2f52988a .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/08/17 02:36 linux-6.1.y e4f7d8be268e 746171ee .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/08/15 22:06 linux-6.1.y e4f7d8be268e 746171ee .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/08/14 04:44 linux-6.1.y e4f7d8be268e b13552fe .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/08/09 00:09 linux-6.1.y e4f7d8be268e 5d63f80b .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/08/02 08:47 linux-6.1.y fb28aa725e05 e611ffe1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/07/31 16:26 linux-6.1.y fb28aa725e05 7664cf44 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/07/29 22:39 linux-6.1.y 1016ca6176ee 6ef5c1e2 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/07/29 20:58 linux-6.1.y 1016ca6176ee 6ef5c1e2 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/07/29 05:43 linux-6.1.y dc5c83b7f5f8 19622d9d .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/07/27 16:09 linux-6.1.y dc5c83b7f5f8 aae9036b .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/07/26 17:39 linux-6.1.y dc5c83b7f5f8 492bab15 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/07/26 10:36 linux-6.1.y dc5c83b7f5f8 492bab15 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/07/22 01:46 linux-6.1.y 090666d3cc90 b561ce9c .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/07/21 13:21 linux-6.1.y 090666d3cc90 7c5de9c3 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2026/07/21 01:39 linux-6.1.y 090666d3cc90 de6a700d .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
2025/01/01 05:39 linux-6.1.y 563edd786f0a d3ccff63 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in ocfs2_read_virt_blocks
* Struck through repros no longer work on HEAD.