syzbot


possible deadlock in do_journal_begin_r

Status: upstream: reported C repro on 2022/09/27 10:45
Subsystems: reiserfs
[Documentation on labels]
Reported-by: syzbot+62c10f0bd6c14e9fffec@syzkaller.appspotmail.com
First crash: 567d, last: 481d
Fix bisection: failed (error log, bisect log)
  
Similar bugs (4)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
linux-4.14 possible deadlock in do_journal_begin_r reiserfs C 55 409d 558d 0/1 upstream: reported C repro on 2022/10/05 14:07
upstream possible deadlock in do_journal_begin_r reiserfs C error error 227 86d 562d 0/26 upstream: reported C repro on 2022/10/01 13:48
linux-6.1 possible deadlock in do_journal_begin_r origin:upstream C 25 19d 296d 0/3 upstream: reported C repro on 2023/06/25 10:36
linux-5.15 possible deadlock in do_journal_begin_r origin:upstream C 41 20d 302d 0/3 upstream: reported C repro on 2023/06/19 07:49

Sample crash report:
REISERFS (device loop0): journal params: device loop0, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30
REISERFS (device loop0): checking transaction log (loop0)
REISERFS (device loop0): Using rupasov hash to sort names
REISERFS (device loop0): Created .reiserfs_priv - reserved for xattr storage.
======================================================
WARNING: possible circular locking dependency detected
4.19.211-syzkaller #0 Not tainted
------------------------------------------------------
syz-executor593/8102 is trying to acquire lock:
00000000c65859ad (&journal->j_mutex){+.+.}, at: reiserfs_mutex_lock_safe fs/reiserfs/reiserfs.h:816 [inline]
00000000c65859ad (&journal->j_mutex){+.+.}, at: lock_journal fs/reiserfs/journal.c:538 [inline]
00000000c65859ad (&journal->j_mutex){+.+.}, at: do_journal_begin_r+0x298/0x10b0 fs/reiserfs/journal.c:3057

but task is already holding lock:
00000000c3bae315 (sb_writers#11){.+.+}, at: sb_start_write include/linux/fs.h:1579 [inline]
00000000c3bae315 (sb_writers#11){.+.+}, at: mnt_want_write_file+0x63/0x1d0 fs/namespace.c:418

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #2 (sb_writers#11){.+.+}:
       sb_start_write include/linux/fs.h:1579 [inline]
       mnt_want_write_file+0x63/0x1d0 fs/namespace.c:418
       reiserfs_ioctl+0x1a7/0x9a0 fs/reiserfs/ioctl.c:110
       vfs_ioctl fs/ioctl.c:46 [inline]
       file_ioctl fs/ioctl.c:501 [inline]
       do_vfs_ioctl+0xcdb/0x12e0 fs/ioctl.c:688
       ksys_ioctl+0x9b/0xc0 fs/ioctl.c:705
       __do_sys_ioctl fs/ioctl.c:712 [inline]
       __se_sys_ioctl fs/ioctl.c:710 [inline]
       __x64_sys_ioctl+0x6f/0xb0 fs/ioctl.c:710
       do_syscall_64+0xf9/0x620 arch/x86/entry/common.c:293
       entry_SYSCALL_64_after_hwframe+0x49/0xbe

-> #1 (&sbi->lock){+.+.}:
       reiserfs_write_lock_nested+0x65/0xe0 fs/reiserfs/lock.c:78
       reiserfs_mutex_lock_safe fs/reiserfs/reiserfs.h:817 [inline]
       lock_journal fs/reiserfs/journal.c:538 [inline]
       do_journal_begin_r+0x2a2/0x10b0 fs/reiserfs/journal.c:3057
       journal_begin+0x162/0x400 fs/reiserfs/journal.c:3265
       reiserfs_fill_super+0x1a81/0x2d80 fs/reiserfs/super.c:2117
       mount_bdev+0x2fc/0x3b0 fs/super.c:1158
       mount_fs+0xa3/0x310 fs/super.c:1261
       vfs_kern_mount.part.0+0x68/0x470 fs/namespace.c:961
       vfs_kern_mount fs/namespace.c:951 [inline]
       do_new_mount fs/namespace.c:2492 [inline]
       do_mount+0x115c/0x2f50 fs/namespace.c:2822
       ksys_mount+0xcf/0x130 fs/namespace.c:3038
       __do_sys_mount fs/namespace.c:3052 [inline]
       __se_sys_mount fs/namespace.c:3049 [inline]
       __x64_sys_mount+0xba/0x150 fs/namespace.c:3049
       do_syscall_64+0xf9/0x620 arch/x86/entry/common.c:293
       entry_SYSCALL_64_after_hwframe+0x49/0xbe

-> #0 (&journal->j_mutex){+.+.}:
       __mutex_lock_common kernel/locking/mutex.c:937 [inline]
       __mutex_lock+0xd7/0x1190 kernel/locking/mutex.c:1078
       reiserfs_mutex_lock_safe fs/reiserfs/reiserfs.h:816 [inline]
       lock_journal fs/reiserfs/journal.c:538 [inline]
       do_journal_begin_r+0x298/0x10b0 fs/reiserfs/journal.c:3057
       journal_begin+0x162/0x400 fs/reiserfs/journal.c:3265
       reiserfs_dirty_inode+0xff/0x250 fs/reiserfs/super.c:716
       __mark_inode_dirty+0x16b/0x1140 fs/fs-writeback.c:2164
       mark_inode_dirty include/linux/fs.h:2086 [inline]
       reiserfs_ioctl+0x7dc/0x9a0 fs/reiserfs/ioctl.c:118
       vfs_ioctl fs/ioctl.c:46 [inline]
       file_ioctl fs/ioctl.c:501 [inline]
       do_vfs_ioctl+0xcdb/0x12e0 fs/ioctl.c:688
       ksys_ioctl+0x9b/0xc0 fs/ioctl.c:705
       __do_sys_ioctl fs/ioctl.c:712 [inline]
       __se_sys_ioctl fs/ioctl.c:710 [inline]
       __x64_sys_ioctl+0x6f/0xb0 fs/ioctl.c:710
       do_syscall_64+0xf9/0x620 arch/x86/entry/common.c:293
       entry_SYSCALL_64_after_hwframe+0x49/0xbe

other info that might help us debug this:

Chain exists of:
  &journal->j_mutex --> &sbi->lock --> sb_writers#11

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(sb_writers#11);
                               lock(&sbi->lock);
                               lock(sb_writers#11);
  lock(&journal->j_mutex);

 *** DEADLOCK ***

1 lock held by syz-executor593/8102:
 #0: 00000000c3bae315 (sb_writers#11){.+.+}, at: sb_start_write include/linux/fs.h:1579 [inline]
 #0: 00000000c3bae315 (sb_writers#11){.+.+}, at: mnt_want_write_file+0x63/0x1d0 fs/namespace.c:418

stack backtrace:
CPU: 1 PID: 8102 Comm: syz-executor593 Not tainted 4.19.211-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022
Call Trace:
 __dump_stack lib/dump_stack.c:77 [inline]
 dump_stack+0x1fc/0x2ef lib/dump_stack.c:118
 print_circular_bug.constprop.0.cold+0x2d7/0x41e kernel/locking/lockdep.c:1222
 check_prev_add kernel/locking/lockdep.c:1866 [inline]
 check_prevs_add kernel/locking/lockdep.c:1979 [inline]
 validate_chain kernel/locking/lockdep.c:2420 [inline]
 __lock_acquire+0x30c9/0x3ff0 kernel/locking/lockdep.c:3416
 lock_acquire+0x170/0x3c0 kernel/locking/lockdep.c:3908
 __mutex_lock_common kernel/locking/mutex.c:937 [inline]
 __mutex_lock+0xd7/0x1190 kernel/locking/mutex.c:1078
 reiserfs_mutex_lock_safe fs/reiserfs/reiserfs.h:816 [inline]
 lock_journal fs/reiserfs/journal.c:538 [inline]
 do_journal_begin_r+0x298/0x10b0 fs/reiserfs/journal.c:3057
 journal_begin+0x162/0x400 fs/reiserfs/journal.c:3265
 reiserfs_dirty_inode+0xff/0x250 fs/reiserfs/super.c:716
 __mark_inode_dirty+0x16b/0x1140 fs/fs-writeback.c:2164
 mark_inode_dirty include/linux/fs.h:2086 [inline]
 reiserfs_ioctl+0x7dc/0x9a0 fs/reiserfs/ioctl.c:118
 vfs_ioctl fs/ioctl.c:46 [inline]
 file_ioctl fs/ioctl.c:501 [inline]
 do_vfs_ioctl+0xcdb/0x12e0 fs/ioctl.c:688
 ksys_ioctl+0x9b/0xc0 fs/ioctl.c:705
 __do_sys_ioctl fs/ioctl.c:712 [inline]
 __se_sys_ioctl fs/ioctl.c:710 [inline]
 __x64_sys_ioctl+0x6f/0xb0 fs/ioctl.c:710
 do_syscall_64+0xf9/0x620 arch/x86/entry/common.c:293
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x7f88b45ca8f9
Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 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 c0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffce7ab4ba8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f88b45ca8f9
RDX: 0000000020000080 RSI: 0000000040087602 RDI: 0000000000000005
RBP: 0000000000000000 R08: 0000000000000000 R09: 00007f88b4637ec0
R10: 00007ffce7ab4a70 R11: 0000000000000246 R12: 00007ffce7ab4bd0
R13: 0000000000000000 R14: 431bde82d7b634db R15: 0000000000000000

Crashes (45):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2022/11/21 10:06 linux-4.19.y 3f8a27f9e27b 5bb70014 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/20 07:03 linux-4.19.y 3f8a27f9e27b 5bb70014 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/20 04:24 linux-4.19.y 3f8a27f9e27b 5bb70014 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/19 05:44 linux-4.19.y 3f8a27f9e27b 5bb70014 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/18 14:03 linux-4.19.y 3f8a27f9e27b 5bb70014 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/17 03:43 linux-4.19.y 3f8a27f9e27b 3a127a31 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/16 07:27 linux-4.19.y 3f8a27f9e27b 3a127a31 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/14 18:25 linux-4.19.y 3f8a27f9e27b 943f4cb8 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/14 17:42 linux-4.19.y 3f8a27f9e27b 943f4cb8 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/14 13:23 linux-4.19.y 3f8a27f9e27b 943f4cb8 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/14 08:18 linux-4.19.y 3f8a27f9e27b 7ba4d859 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/13 20:26 linux-4.19.y 3f8a27f9e27b 7ba4d859 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/12 13:44 linux-4.19.y 3f8a27f9e27b f42ee5d8 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/11 23:36 linux-4.19.y 3f8a27f9e27b f42ee5d8 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/11 22:23 linux-4.19.y 3f8a27f9e27b f42ee5d8 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/11 16:13 linux-4.19.y 3f8a27f9e27b f42ee5d8 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/11 15:15 linux-4.19.y 3f8a27f9e27b f42ee5d8 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/11 08:26 linux-4.19.y 3f8a27f9e27b f42ee5d8 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/10 13:29 linux-4.19.y 3f8a27f9e27b b2488a87 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/10 08:58 linux-4.19.y 3f8a27f9e27b b2488a87 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/08 17:48 linux-4.19.y 3f8a27f9e27b 060f945e .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/07 06:56 linux-4.19.y 3f8a27f9e27b 6d752409 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/06 13:39 linux-4.19.y 3f8a27f9e27b 6d752409 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/06 11:28 linux-4.19.y 3f8a27f9e27b 6d752409 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/06 08:13 linux-4.19.y 3f8a27f9e27b 6d752409 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/06 06:29 linux-4.19.y 3f8a27f9e27b 6d752409 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/11/04 17:44 linux-4.19.y 3f8a27f9e27b 6d752409 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/24 00:15 linux-4.19.y 3f8a27f9e27b 23bf86af .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/05 11:33 linux-4.19.y 3f8a27f9e27b 267e3bb1 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/05 06:15 linux-4.19.y 3f8a27f9e27b 267e3bb1 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/04 22:48 linux-4.19.y 3f8a27f9e27b eab8f949 .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/09/27 10:45 linux-4.19.y 3f8a27f9e27b 10323ddf .config console log report syz C [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/12/21 18:15 linux-4.19.y 3f8a27f9e27b 4067838e .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/12/18 23:30 linux-4.19.y 3f8a27f9e27b 05494336 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/12/09 22:46 linux-4.19.y 3f8a27f9e27b 67be1ae7 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/28 00:42 linux-4.19.y 3f8a27f9e27b 5c716ff6 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/23 13:26 linux-4.19.y 3f8a27f9e27b 23bf86af .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/23 13:15 linux-4.19.y 3f8a27f9e27b 23bf86af .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/23 06:08 linux-4.19.y 3f8a27f9e27b c0b80a55 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/22 22:16 linux-4.19.y 3f8a27f9e27b c0b80a55 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/20 06:57 linux-4.19.y 3f8a27f9e27b b31320fc .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/19 19:41 linux-4.19.y 3f8a27f9e27b b31320fc .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/19 04:09 linux-4.19.y 3f8a27f9e27b b31320fc .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/18 14:05 linux-4.19.y 3f8a27f9e27b b31320fc .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
2022/10/18 13:01 linux-4.19.y 3f8a27f9e27b b31320fc .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in do_journal_begin_r
* Struck through repros no longer work on HEAD.