Hello,
syzbot found the following issue on:
HEAD commit: 91d48252ad4b Linux 5.15.202
git tree: linux-5.15.y
console output:
https://syzkaller.appspot.com/x/log.txt?x=13014ada580000
kernel config:
https://syzkaller.appspot.com/x/.config?x=353ae28c40b35af5
dashboard link:
https://syzkaller.appspot.com/bug?extid=f6b17c7f3b78b5128802
compiler: Debian clang version 21.1.8 (++20251221033036+2078da43e25a-1~exp1~20251221153213.50), Debian LLD 21.1.8
Unfortunately, I don't have any reproducer for this issue yet.
Downloadable assets:
disk image:
https://storage.googleapis.com/syzbot-assets/74e75dfcb812/disk-91d48252.raw.xz
vmlinux:
https://storage.googleapis.com/syzbot-assets/bfa72aab00f2/vmlinux-91d48252.xz
kernel image:
https://storage.googleapis.com/syzbot-assets/47ea72d1c7dc/bzImage-91d48252.xz
IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by:
syzbot+f6b17c...@syzkaller.appspotmail.com
=========================
WARNING: held lock freed!
syzkaller #0 Not tainted
-------------------------
gfs2_quotad/4426 is freeing memory ffff88805f4a3640-ffff88805f4a3c87, with a lock still held there!
ffff88805f4a3790 (&gfs2_quota_imutex_key){+.+.}-{3:3}, at: inode_lock include/linux/fs.h:787 [inline]
ffff88805f4a3790 (&gfs2_quota_imutex_key){+.+.}-{3:3}, at: do_sync+0x35a/0xc40 fs/gfs2/quota.c:919
3 locks held by gfs2_quotad/4426:
#0: ffff88807b0f4b70 (&sdp->sd_quota_sync_mutex){+.+.}-{3:3}, at: gfs2_quota_sync+0x91/0x700 fs/gfs2/quota.c:1313
#1: ffff88805f4a3790 (&gfs2_quota_imutex_key){+.+.}-{3:3}, at: inode_lock include/linux/fs.h:787 [inline]
#1: ffff88805f4a3790 (&gfs2_quota_imutex_key){+.+.}-{3:3}, at: do_sync+0x35a/0xc40 fs/gfs2/quota.c:919
#2: ffffffff8c31ebc0 (rcu_callback){....}-{0:0}, at: rcu_lock_acquire+0x0/0x20
stack backtrace:
CPU: 1 PID: 4426 Comm: gfs2_quotad Not tainted syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/12/2026
Call Trace:
<IRQ>
dump_stack_lvl+0x188/0x250 lib/dump_stack.c:106
print_freed_lock_bug kernel/locking/lockdep.c:6401 [inline]
debug_check_no_locks_freed+0x301/0x3e0 kernel/locking/lockdep.c:6434
slab_free_hook mm/slub.c:1682 [inline]
slab_free_freelist_hook+0x76/0x170 mm/slub.c:1736
slab_free mm/slub.c:3504 [inline]
kmem_cache_free+0x8f/0x210 mm/slub.c:3520
rcu_do_batch kernel/rcu/tree.c:2523 [inline]
rcu_core+0x9d2/0x1670 kernel/rcu/tree.c:2763
handle_softirqs+0x339/0x830 kernel/softirq.c:576
__do_softirq kernel/softirq.c:610 [inline]
invoke_softirq kernel/softirq.c:450 [inline]
__irq_exit_rcu+0x13b/0x230 kernel/softirq.c:659
irq_exit_rcu+0x5/0x20 kernel/softirq.c:671
instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1108 [inline]
sysvec_apic_timer_interrupt+0xa0/0xc0 arch/x86/kernel/apic/apic.c:1108
</IRQ>
<TASK>
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:676
RIP: 0010:preempt_schedule_irq+0xb6/0x160 kernel/sched/core.c:6799
Code: 00 00 43 c6 44 37 04 f8 74 0b 0f 0b 48 f7 03 08 00 00 00 74 7f bf 01 00 00 00 e8 85 ae 8d f7 e8 c0 9a ba f7 fb bf 01 00 00 00 <e8> 65 b5 ff ff 43 c6 44 37 08 00 48 c7 44 24 40 00 00 00 00 9c 8f
RSP: 0018:ffffc90002f9f440 EFLAGS: 00000286
RAX: 142f6a9bc7b3dd00 RBX: 0000000000000000 RCX: 142f6a9bc7b3dd00
RDX: dffffc0000000000 RSI: ffffffff8a2b2780 RDI: 0000000000000001
RBP: ffffc90002f9f4e0 R08: ffffffff901d4217 R09: 1ffffffff203a842
R10: dffffc0000000000 R11: fffffbfff203a843 R12: 0000000000000000
R13: 0000000000000000 R14: dffffc0000000000 R15: 1ffff920005f3e88
irqentry_exit+0x63/0x70 kernel/entry/common.c:432
asm_sysvec_reschedule_ipi+0x16/0x20 arch/x86/include/asm/idtentry.h:681
RIP: 0010:dump_stack_lvl+0x20e/0x250 lib/dump_stack.c:108
Code: e8 97 9e c4 f7 48 bb 00 00 00 00 00 fc ff df 4d 85 ed 75 07 e8 83 9e c4 f7 eb 06 e8 7c 9e c4 f7 fb 48 c7 44 24 20 0e 36 e0 45 <31> c0 49 89 04 1f 49 89 44 1f 08 65 48 8b 04 25 28 00 00 00 48 3b
RSP: 0018:ffffc90002f9f5a0 EFLAGS: 00000293
RAX: ffffffff89b48294 RBX: dffffc0000000000 RCX: ffff88802c658000
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
RBP: ffffc90002f9f690 R08: ffffffff901d4217 R09: 1ffffffff203a842
R10: dffffc0000000000 R11: fffffbfff203a843 R12: dffffc0000000004
R13: 0000000000000200 R14: 0000000000000000 R15: 1ffff920005f3eb8
gfs2_withdraw+0x1149/0x1490 fs/gfs2/util.c:355
gfs2_dinode_in fs/gfs2/glops.c:465 [inline]
gfs2_inode_refresh+0xb64/0xff0 fs/gfs2/glops.c:485
inode_go_lock+0x127/0x470 fs/gfs2/glops.c:510
do_promote+0x741/0xab0 fs/gfs2/glock.c:507
finish_xmote+0x4df/0xb00 fs/gfs2/glock.c:678
do_xmote+0x7b6/0x1120 fs/gfs2/glock.c:824
gfs2_glock_nq+0xc7a/0x1550 fs/gfs2/glock.c:1534
gfs2_glock_nq_init fs/gfs2/glock.h:246 [inline]
do_sync+0x4ab/0xc40 fs/gfs2/quota.c:927
gfs2_quota_sync+0x32c/0x700 fs/gfs2/quota.c:1329
quotad_check_timeo fs/gfs2/quota.c:1519 [inline]
gfs2_quotad+0x403/0x890 fs/gfs2/quota.c:1586
kthread+0x436/0x520 kernel/kthread.c:334
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:287
</TASK>
----------------
Code disassembly (best guess):
0: 00 00 add %al,(%rax)
2: 43 c6 44 37 04 f8 movb $0xf8,0x4(%r15,%r14,1)
8: 74 0b je 0x15
a: 0f 0b ud2
c: 48 f7 03 08 00 00 00 testq $0x8,(%rbx)
13: 74 7f je 0x94
15: bf 01 00 00 00 mov $0x1,%edi
1a: e8 85 ae 8d f7 call 0xf78daea4
1f: e8 c0 9a ba f7 call 0xf7ba9ae4
24: fb sti
25: bf 01 00 00 00 mov $0x1,%edi
* 2a: e8 65 b5 ff ff call 0xffffb594 <-- trapping instruction
2f: 43 c6 44 37 08 00 movb $0x0,0x8(%r15,%r14,1)
35: 48 c7 44 24 40 00 00 movq $0x0,0x40(%rsp)
3c: 00 00
3e: 9c pushf
3f: 8f .byte 0x8f
---
This report is generated by a bot. It may contain errors.
See
https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at
syzk...@googlegroups.com.
syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title
If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)
If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report
If you want to undo deduplication, reply with:
#syz undup