syzbot


possible deadlock in do_qc

Status: upstream: reported on 2024/04/28 01:25
Reported-by: syzbot+bdc96b32d35cce7a6064@syzkaller.appspotmail.com
First crash: 574d, last: 52m
Similar bugs (3)
Kernel Title Rank 🛈 Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream possible deadlock in do_qc gfs2 4 785 467d 595d 0/29 auto-obsoleted due to no activity on 2024/10/22 09:11
linux-5.15 possible deadlock in do_qc 4 814 8d06h 574d 0/3 upstream: reported on 2024/04/27 22:18
linux-6.6 possible deadlock in do_qc 4 112 13h01m 159d 0/2 upstream: reported on 2025/06/17 09:35

Sample crash report:
======================================================
WARNING: possible circular locking dependency detected
syzkaller #0 Not tainted
------------------------------------------------------
syz.2.10/4425 is trying to acquire lock:
ffff888053620ae0 (&sdp->sd_quota_mutex){+.+.}-{3:3}, at: do_qc+0xca/0x730 fs/gfs2/quota.c:682

but task is already holding lock:
ffff8880555c85e8 (&ip->i_rw_mutex){++++}-{3:3}, at: sweep_bh_for_rgrps fs/gfs2/bmap.c:1512 [inline]
ffff8880555c85e8 (&ip->i_rw_mutex){++++}-{3:3}, at: punch_hole+0x241b/0x35c0 fs/gfs2/bmap.c:1837

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (&ip->i_rw_mutex){++++}-{3:3}:
       down_read+0x42/0x2d0 kernel/locking/rwsem.c:1520
       __gfs2_iomap_get+0x155/0x13e0 fs/gfs2/bmap.c:856
       gfs2_iomap_get+0xc1/0x120 fs/gfs2/bmap.c:1396
       bh_get+0x241/0x730 fs/gfs2/quota.c:385
       qdsb_get+0x21c/0x3c0 fs/gfs2/quota.c:522
       gfs2_quota_hold+0x194/0x5d0 fs/gfs2/quota.c:608
       gfs2_dinode_dealloc fs/gfs2/super.c:1210 [inline]
       evict_unlinked_inode+0x439/0x6d0 fs/gfs2/super.c:1408
       gfs2_evict_inode+0x6a7/0x1170 fs/gfs2/super.c:1497
       evict+0x485/0x870 fs/inode.c:705
       do_unlinkat+0x377/0x560 fs/namei.c:4405
       __do_sys_unlink fs/namei.c:4446 [inline]
       __se_sys_unlink fs/namei.c:4444 [inline]
       __x64_sys_unlink+0x45/0x50 fs/namei.c:4444
       do_syscall_x64 arch/x86/entry/common.c:51 [inline]
       do_syscall_64+0x4c/0xa0 arch/x86/entry/common.c:81
       entry_SYSCALL_64_after_hwframe+0x68/0xd2

-> #0 (&sdp->sd_quota_mutex){+.+.}-{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+0x2cf8/0x7c50 kernel/locking/lockdep.c:5049
       lock_acquire+0x1b4/0x490 kernel/locking/lockdep.c:5662
       __mutex_lock_common kernel/locking/mutex.c:603 [inline]
       __mutex_lock+0x120/0xaf0 kernel/locking/mutex.c:747
       do_qc+0xca/0x730 fs/gfs2/quota.c:682
       gfs2_quota_change+0x2f5/0x8e0 fs/gfs2/quota.c:1295
       punch_hole+0x304c/0x35c0 fs/gfs2/bmap.c:1938
       evict_unlinked_inode+0x1a3/0x6d0 fs/gfs2/super.c:1398
       gfs2_evict_inode+0x6a7/0x1170 fs/gfs2/super.c:1497
       evict+0x485/0x870 fs/inode.c:705
       __dentry_kill+0x431/0x650 fs/dcache.c:611
       dentry_kill+0xb8/0x290 fs/dcache.c:-1
       dput+0xfa/0x1d0 fs/dcache.c:918
       __fput+0x5e0/0x920 fs/file_table.c:328
       task_work_run+0x1ca/0x250 kernel/task_work.c:203
       exit_task_work include/linux/task_work.h:39 [inline]
       do_exit+0x93e/0x2400 kernel/exit.c:880
       do_group_exit+0x217/0x2d0 kernel/exit.c:1022
       get_signal+0x1272/0x1350 kernel/signal.c:2871
       arch_do_signal_or_restart+0xb7/0x1240 arch/x86/kernel/signal.c:871
       exit_to_user_mode_loop+0x70/0x110 kernel/entry/common.c:174
       exit_to_user_mode_prepare+0xee/0x180 kernel/entry/common.c:210
       irqentry_exit_to_user_mode+0x5/0x30 kernel/entry/common.c:316
       exc_page_fault+0x88/0x100 arch/x86/mm/fault.c:1490
       asm_exc_page_fault+0x22/0x30 arch/x86/include/asm/idtentry.h:608

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&ip->i_rw_mutex);
                               lock(&sdp->sd_quota_mutex);
                               lock(&ip->i_rw_mutex);
  lock(&sdp->sd_quota_mutex);

 *** DEADLOCK ***

3 locks held by syz.2.10/4425:
 #0: ffff8880196f8650 (sb_internal#2){.+.+}-{0:0}, at: gfs2_trans_begin+0x6b/0xe0 fs/gfs2/trans.c:118
 #1: ffff888053621058 (&sdp->sd_log_flush_lock){.+.+}-{3:3}, at: __gfs2_trans_begin+0x50d/0x880 fs/gfs2/trans.c:87
 #2: ffff8880555c85e8 (&ip->i_rw_mutex){++++}-{3:3}, at: sweep_bh_for_rgrps fs/gfs2/bmap.c:1512 [inline]
 #2: ffff8880555c85e8 (&ip->i_rw_mutex){++++}-{3:3}, at: punch_hole+0x241b/0x35c0 fs/gfs2/bmap.c:1837

stack backtrace:
CPU: 0 PID: 4425 Comm: syz.2.10 Not tainted syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/02/2025
Call Trace:
 <TASK>
 dump_stack_lvl+0x168/0x22e lib/dump_stack.c:106
 check_noncircular+0x274/0x310 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+0x2cf8/0x7c50 kernel/locking/lockdep.c:5049
 lock_acquire+0x1b4/0x490 kernel/locking/lockdep.c:5662
 __mutex_lock_common kernel/locking/mutex.c:603 [inline]
 __mutex_lock+0x120/0xaf0 kernel/locking/mutex.c:747
 do_qc+0xca/0x730 fs/gfs2/quota.c:682
 gfs2_quota_change+0x2f5/0x8e0 fs/gfs2/quota.c:1295
 punch_hole+0x304c/0x35c0 fs/gfs2/bmap.c:1938
 evict_unlinked_inode+0x1a3/0x6d0 fs/gfs2/super.c:1398
 gfs2_evict_inode+0x6a7/0x1170 fs/gfs2/super.c:1497
 evict+0x485/0x870 fs/inode.c:705
 __dentry_kill+0x431/0x650 fs/dcache.c:611
 dentry_kill+0xb8/0x290 fs/dcache.c:-1
 dput+0xfa/0x1d0 fs/dcache.c:918
 __fput+0x5e0/0x920 fs/file_table.c:328
 task_work_run+0x1ca/0x250 kernel/task_work.c:203
 exit_task_work include/linux/task_work.h:39 [inline]
 do_exit+0x93e/0x2400 kernel/exit.c:880
 do_group_exit+0x217/0x2d0 kernel/exit.c:1022
 get_signal+0x1272/0x1350 kernel/signal.c:2871
 arch_do_signal_or_restart+0xb7/0x1240 arch/x86/kernel/signal.c:871
 exit_to_user_mode_loop+0x70/0x110 kernel/entry/common.c:174
 exit_to_user_mode_prepare+0xee/0x180 kernel/entry/common.c:210
 irqentry_exit_to_user_mode+0x5/0x30 kernel/entry/common.c:316
 exc_page_fault+0x88/0x100 arch/x86/mm/fault.c:1490
 asm_exc_page_fault+0x22/0x30 arch/x86/include/asm/idtentry.h:608
RIP: 0033:0x7040d5
Code: Unable to access opcode bytes at 0x7040ab.
RSP: 002b:0000200000000218 EFLAGS: 00010217
RAX: 0000000000000000 RBX: 00007ff5cb5e5fa0 RCX: 00007ff5cb38f6c9
RDX: 0000200000000040 RSI: 0000200000000210 RDI: 0000000002200000
RBP: 00007ff5cb411f91 R08: 0000200000000240 R09: 0000200000000240
R10: 0000200000000100 R11: 0000000000000206 R12: 0000000000000000
R13: 00007ff5cb5e6038 R14: 00007ff5cb5e5fa0 R15: 00007ffd581ac9f8
 </TASK>

Crashes (1172):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2025/11/11 22:00 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in do_qc
2025/11/08 15:17 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in do_qc
2025/11/03 17:13 linux-6.1.y f6e38ae624cf 2c50b6a9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in do_qc
2025/11/23 11:22 linux-6.1.y f6e38ae624cf 4fb8ef37 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/23 10:02 linux-6.1.y f6e38ae624cf 4fb8ef37 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/23 05:06 linux-6.1.y f6e38ae624cf 4fb8ef37 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/20 20:29 linux-6.1.y f6e38ae624cf 2cc4c24a .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/18 16:00 linux-6.1.y f6e38ae624cf ef766cd7 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/18 08:06 linux-6.1.y f6e38ae624cf ef766cd7 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/17 06:33 linux-6.1.y f6e38ae624cf f7988ea4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/17 00:46 linux-6.1.y f6e38ae624cf f7988ea4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/15 07:02 linux-6.1.y f6e38ae624cf f7988ea4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/14 11:47 linux-6.1.y f6e38ae624cf 07e030de .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/14 07:47 linux-6.1.y f6e38ae624cf 07e030de .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/14 04:49 linux-6.1.y f6e38ae624cf 07e030de .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/14 01:13 linux-6.1.y f6e38ae624cf 07e030de .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/13 04:21 linux-6.1.y f6e38ae624cf 07e030de .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/12 02:15 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/11 20:19 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/11 10:54 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/11 09:03 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/11 05:07 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/10 23:51 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/10 20:14 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/10 16:05 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/10 10:02 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/10 06:06 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/10 02:27 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/09 02:38 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/08 13:13 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/07 20:27 linux-6.1.y f6e38ae624cf 4e1406b4 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/05 02:41 linux-6.1.y f6e38ae624cf 686bf657 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/04 20:08 linux-6.1.y f6e38ae624cf 686bf657 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/03 16:00 linux-6.1.y f6e38ae624cf 2c50b6a9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/03 11:17 linux-6.1.y f6e38ae624cf 2c50b6a9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/03 06:28 linux-6.1.y f6e38ae624cf 2c50b6a9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/03 05:23 linux-6.1.y f6e38ae624cf 2c50b6a9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/03 01:34 linux-6.1.y f6e38ae624cf 2c50b6a9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/03 00:13 linux-6.1.y f6e38ae624cf 2c50b6a9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/02 18:13 linux-6.1.y f6e38ae624cf 2c50b6a9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/02 04:51 linux-6.1.y f6e38ae624cf 2c50b6a9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/02 04:50 linux-6.1.y f6e38ae624cf 2c50b6a9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/02 01:09 linux-6.1.y f6e38ae624cf 2c50b6a9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2025/11/01 05:04 linux-6.1.y f6e38ae624cf 2c50b6a9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
2024/04/28 01:25 linux-6.1.y f2295faba5e8 07b455f9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 possible deadlock in do_qc
* Struck through repros no longer work on HEAD.