[v5.15] possible deadlock in __hrtimer_run_queues (2)

0 views
Skip to first unread message

syzbot

unread,
Mar 28, 2024, 12:51:26 AMMar 28
to syzkaller...@googlegroups.com
Hello,

syzbot found the following issue on:

HEAD commit: 9465fef4ae35 Linux 5.15.153
git tree: linux-5.15.y
console output: https://syzkaller.appspot.com/x/log.txt?x=136df595180000
kernel config: https://syzkaller.appspot.com/x/.config?x=176c746ee3348b33
dashboard link: https://syzkaller.appspot.com/bug?extid=f2c79401d50f2f23fa4b
compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40

Unfortunately, I don't have any reproducer for this issue yet.

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/2962c02652ce/disk-9465fef4.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/d0f5a1ce082d/vmlinux-9465fef4.xz
kernel image: https://storage.googleapis.com/syzbot-assets/86b5b1eea636/bzImage-9465fef4.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+f2c794...@syzkaller.appspotmail.com

------------[ cut here ]------------
======================================================
WARNING: possible circular locking dependency detected
5.15.153-syzkaller #0 Not tainted
------------------------------------------------------
syz-fuzzer/3497 is trying to acquire lock:
ffffffff8c7fbf78 ((console_sem).lock){-.-.}-{2:2}, at: down_trylock+0x1c/0xa0 kernel/locking/semaphore.c:138

but task is already holding lock:
ffff8880b9a2a218 (hrtimer_bases.lock){-.-.}-{2:2}, at: __run_hrtimer kernel/time/hrtimer.c:1690 [inline]
ffff8880b9a2a218 (hrtimer_bases.lock){-.-.}-{2:2}, at: __hrtimer_run_queues+0x662/0xcf0 kernel/time/hrtimer.c:1750

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #4 (hrtimer_bases.lock){-.-.}-{2:2}:
lock_acquire+0x1db/0x4f0 kernel/locking/lockdep.c:5623
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
lock_hrtimer_base kernel/time/hrtimer.c:173 [inline]
hrtimer_start_range_ns+0xd8/0xc50 kernel/time/hrtimer.c:1297
hrtimer_start_expires include/linux/hrtimer.h:434 [inline]
do_start_rt_bandwidth kernel/sched/rt.c:69 [inline]
start_rt_bandwidth kernel/sched/rt.c:80 [inline]
inc_rt_group kernel/sched/rt.c:1207 [inline]
inc_rt_tasks kernel/sched/rt.c:1251 [inline]
__enqueue_rt_entity kernel/sched/rt.c:1321 [inline]
enqueue_rt_entity kernel/sched/rt.c:1368 [inline]
enqueue_task_rt+0x5a0/0xbf0 kernel/sched/rt.c:1398
enqueue_task+0x181/0x3a0 kernel/sched/core.c:1977
__sched_setscheduler+0x13bf/0x1e20 kernel/sched/core.c:7551
_sched_setscheduler kernel/sched/core.c:7598 [inline]
sched_setscheduler_nocheck kernel/sched/core.c:7645 [inline]
sched_set_fifo+0x10e/0x1e0 kernel/sched/core.c:7669
drm_vblank_worker_init+0x149/0x190 drivers/gpu/drm/drm_vblank_work.c:263
drm_vblank_init+0x274/0x330 drivers/gpu/drm/drm_vblank.c:551
vkms_create drivers/gpu/drm/vkms/vkms_drv.c:195 [inline]
vkms_init+0x330/0x6c6 drivers/gpu/drm/vkms/vkms_drv.c:235
do_one_initcall+0x22b/0x7a0 init/main.c:1300
do_initcall_level+0x157/0x207 init/main.c:1373
do_initcalls+0x49/0x86 init/main.c:1389
kernel_init_freeable+0x425/0x5b5 init/main.c:1613
kernel_init+0x19/0x290 init/main.c:1504
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:298

-> #3 (&rt_b->rt_runtime_lock){-.-.}-{2:2}:
lock_acquire+0x1db/0x4f0 kernel/locking/lockdep.c:5623
__raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
_raw_spin_lock+0x2a/0x40 kernel/locking/spinlock.c:154
__enable_runtime kernel/sched/rt.c:840 [inline]
rq_online_rt+0x123/0x300 kernel/sched/rt.c:2331
set_rq_online kernel/sched/core.c:9037 [inline]
sched_cpu_activate+0x508/0x6b0 kernel/sched/core.c:9144
cpuhp_invoke_callback+0x49f/0x820 kernel/cpu.c:191
cpuhp_thread_fun+0x3ee/0x790 kernel/cpu.c:822
smpboot_thread_fn+0x51b/0x9d0 kernel/smpboot.c:164
kthread+0x3f6/0x4f0 kernel/kthread.c:319
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:298

-> #2 (&rq->__lock){-.-.}-{2:2}:
lock_acquire+0x1db/0x4f0 kernel/locking/lockdep.c:5623
_raw_spin_lock_nested+0x2d/0x40 kernel/locking/spinlock.c:368
raw_spin_rq_lock_nested+0x26/0x140 kernel/sched/core.c:475
raw_spin_rq_lock kernel/sched/sched.h:1326 [inline]
rq_lock kernel/sched/sched.h:1621 [inline]
task_fork_fair+0x5d/0x350 kernel/sched/fair.c:11480
sched_cgroup_fork+0x2d3/0x330 kernel/sched/core.c:4466
copy_process+0x224a/0x3ef0 kernel/fork.c:2320
kernel_clone+0x210/0x960 kernel/fork.c:2604
kernel_thread+0x168/0x1e0 kernel/fork.c:2656
rest_init+0x21/0x330 init/main.c:704
start_kernel+0x48c/0x535 init/main.c:1138
secondary_startup_64_no_verify+0xb1/0xbb

-> #1 (&p->pi_lock){-.-.}-{2:2}:
lock_acquire+0x1db/0x4f0 kernel/locking/lockdep.c:5623
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
try_to_wake_up+0xae/0x1300 kernel/sched/core.c:4030
up+0x6e/0x90 kernel/locking/semaphore.c:190
__up_console_sem+0x11a/0x1e0 kernel/printk/printk.c:256
console_unlock+0x1145/0x12b0 kernel/printk/printk.c:2754
vprintk_emit+0xbf/0x150 kernel/printk/printk.c:2268
_printk+0xd1/0x111 kernel/printk/printk.c:2293
nf_ct_lookup_helper net/netfilter/nf_conntrack_helper.c:222 [inline]
__nf_ct_try_assign_helper+0x964/0xae0 net/netfilter/nf_conntrack_helper.c:260
init_conntrack+0xc29/0x1740 net/netfilter/nf_conntrack_core.c:1748
resolve_normal_ct net/netfilter/nf_conntrack_core.c:1805 [inline]
nf_conntrack_in+0xf4c/0x1cb0 net/netfilter/nf_conntrack_core.c:1960
nf_hook_entry_hookfn include/linux/netfilter.h:142 [inline]
nf_hook_slow+0xae/0x1e0 net/netfilter/core.c:584
nf_hook+0x2a6/0x430 include/linux/netfilter.h:257
__ip_local_out+0x3b2/0x4f0 net/ipv4/ip_output.c:115
ip_local_out net/ipv4/ip_output.c:124 [inline]
ip_send_skb+0x49/0x1a0 net/ipv4/ip_output.c:1581
udp_send_skb+0x900/0x11f0 net/ipv4/udp.c:979
udp_sendmsg+0x1f3d/0x2d90 net/ipv4/udp.c:1266
sock_sendmsg_nosec net/socket.c:704 [inline]
__sock_sendmsg net/socket.c:716 [inline]
____sys_sendmsg+0x59e/0x8f0 net/socket.c:2431
___sys_sendmsg+0x252/0x2e0 net/socket.c:2485
__sys_sendmmsg+0x2bf/0x560 net/socket.c:2571
__do_sys_sendmmsg net/socket.c:2600 [inline]
__se_sys_sendmmsg net/socket.c:2597 [inline]
__x64_sys_sendmmsg+0x9c/0xb0 net/socket.c:2597
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x61/0xcb

-> #0 ((console_sem).lock){-.-.}-{2:2}:
check_prev_add kernel/locking/lockdep.c:3053 [inline]
check_prevs_add kernel/locking/lockdep.c:3172 [inline]
validate_chain+0x1649/0x5930 kernel/locking/lockdep.c:3788
__lock_acquire+0x1295/0x1ff0 kernel/locking/lockdep.c:5012
lock_acquire+0x1db/0x4f0 kernel/locking/lockdep.c:5623
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
down_trylock+0x1c/0xa0 kernel/locking/semaphore.c:138
__down_trylock_console_sem+0x105/0x250 kernel/printk/printk.c:239
console_trylock kernel/printk/printk.c:2569 [inline]
console_trylock_spinning+0x8a/0x3f0 kernel/printk/printk.c:1867
vprintk_emit+0xa6/0x150 kernel/printk/printk.c:2267
_printk+0xd1/0x111 kernel/printk/printk.c:2293
report_bug+0x1e5/0x2e0 lib/bug.c:195
handle_bug+0x3d/0x70 arch/x86/kernel/traps.c:239
exc_invalid_op+0x16/0x40 arch/x86/kernel/traps.c:259
asm_exc_invalid_op+0x16/0x20 arch/x86/include/asm/idtentry.h:566
copy_from_user_nofault+0x15c/0x1c0
bpf_probe_read_user_common kernel/trace/bpf_trace.c:157 [inline]
____bpf_probe_read_compat kernel/trace/bpf_trace.c:281 [inline]
bpf_probe_read_compat+0xe4/0x180 kernel/trace/bpf_trace.c:277
bpf_prog_ee60aafa828f4cb7+0x35/0x860
bpf_dispatcher_nop_func include/linux/bpf.h:785 [inline]
__bpf_prog_run include/linux/filter.h:628 [inline]
bpf_prog_run include/linux/filter.h:635 [inline]
__bpf_trace_run kernel/trace/bpf_trace.c:1880 [inline]
bpf_trace_run2+0x19e/0x340 kernel/trace/bpf_trace.c:1917
trace_hrtimer_start include/trace/events/timer.h:199 [inline]
debug_activate kernel/time/hrtimer.c:476 [inline]
enqueue_hrtimer+0x324/0x390 kernel/time/hrtimer.c:1084
__run_hrtimer kernel/time/hrtimer.c:1703 [inline]
__hrtimer_run_queues+0x6b6/0xcf0 kernel/time/hrtimer.c:1750
hrtimer_interrupt+0x392/0x980 kernel/time/hrtimer.c:1812
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1085 [inline]
__sysvec_apic_timer_interrupt+0x139/0x470 arch/x86/kernel/apic/apic.c:1102
sysvec_apic_timer_interrupt+0x8c/0xb0 arch/x86/kernel/apic/apic.c:1096
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:638
__might_sleep+0x0/0xc0
try_to_freeze_unsafe include/linux/freezer.h:57 [inline]
try_to_freeze include/linux/freezer.h:67 [inline]
freezer_count include/linux/freezer.h:128 [inline]
freezable_schedule include/linux/freezer.h:173 [inline]
do_nanosleep+0x221/0x7b0 kernel/time/hrtimer.c:2045
hrtimer_nanosleep+0x24d/0x490 kernel/time/hrtimer.c:2098
__do_sys_nanosleep kernel/time/hrtimer.c:2133 [inline]
__se_sys_nanosleep kernel/time/hrtimer.c:2119 [inline]
__x64_sys_nanosleep+0x265/0x2c0 kernel/time/hrtimer.c:2119
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x61/0xcb

other info that might help us debug this:

Chain exists of:
(console_sem).lock --> &rt_b->rt_runtime_lock --> hrtimer_bases.lock

Possible unsafe locking scenario:

CPU0 CPU1
---- ----
lock(hrtimer_bases.lock);
lock(&rt_b->rt_runtime_lock);
lock(hrtimer_bases.lock);
lock((console_sem).lock);

*** DEADLOCK ***

2 locks held by syz-fuzzer/3497:
#0: ffff8880b9a2a218 (hrtimer_bases.lock){-.-.}-{2:2}, at: __run_hrtimer kernel/time/hrtimer.c:1690 [inline]
#0: ffff8880b9a2a218 (hrtimer_bases.lock){-.-.}-{2:2}, at: __hrtimer_run_queues+0x662/0xcf0 kernel/time/hrtimer.c:1750
#1: ffffffff8c91f720 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x5/0x30 include/linux/rcupdate.h:311

stack backtrace:
CPU: 0 PID: 3497 Comm: syz-fuzzer Not tainted 5.15.153-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024
Call Trace:
<IRQ>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x1e3/0x2cb lib/dump_stack.c:106
check_noncircular+0x2f8/0x3b0 kernel/locking/lockdep.c:2133
check_prev_add kernel/locking/lockdep.c:3053 [inline]
check_prevs_add kernel/locking/lockdep.c:3172 [inline]
validate_chain+0x1649/0x5930 kernel/locking/lockdep.c:3788
__lock_acquire+0x1295/0x1ff0 kernel/locking/lockdep.c:5012
lock_acquire+0x1db/0x4f0 kernel/locking/lockdep.c:5623
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
down_trylock+0x1c/0xa0 kernel/locking/semaphore.c:138
__down_trylock_console_sem+0x105/0x250 kernel/printk/printk.c:239
console_trylock kernel/printk/printk.c:2569 [inline]
console_trylock_spinning+0x8a/0x3f0 kernel/printk/printk.c:1867
vprintk_emit+0xa6/0x150 kernel/printk/printk.c:2267
_printk+0xd1/0x111 kernel/printk/printk.c:2293
report_bug+0x1e5/0x2e0 lib/bug.c:195
handle_bug+0x3d/0x70 arch/x86/kernel/traps.c:239
exc_invalid_op+0x16/0x40 arch/x86/kernel/traps.c:259
asm_exc_invalid_op+0x16/0x20 arch/x86/include/asm/idtentry.h:566
RIP: 0010:copy_from_user_nofault+0x15c/0x1c0 mm/maccess.c:226
Code: db 48 c7 c0 f2 ff ff ff 48 0f 44 c5 eb 0c e8 6b dc d5 ff 48 c7 c0 f2 ff ff ff 5b 41 5c 41 5d 41 5e 41 5f 5d c3 e8 54 dc d5 ff <0f> 0b e9 1e ff ff ff 89 d9 80 e1 07 80 c1 03 38 c1 0f 8c ef fe ff
RSP: 0018:ffffc90000007bd0 EFLAGS: 00010046
RAX: ffffffff81aa5d5c RBX: 0000000000000000 RCX: ffff888078bc8000
RDX: 0000000080010002 RSI: 0000000000000000 RDI: 0000000000000000
RBP: dffffc0000000000 R08: ffffffff81aa5c6d R09: ffffed100f179001
R10: 0000000000000000 R11: dffffc0000000001 R12: 0000000000000000
R13: 0000000000000008 R14: 0000000000000000 R15: ffffc90000007c48
bpf_probe_read_user_common kernel/trace/bpf_trace.c:157 [inline]
____bpf_probe_read_compat kernel/trace/bpf_trace.c:281 [inline]
bpf_probe_read_compat+0xe4/0x180 kernel/trace/bpf_trace.c:277
bpf_prog_ee60aafa828f4cb7+0x35/0x860
bpf_dispatcher_nop_func include/linux/bpf.h:785 [inline]
__bpf_prog_run include/linux/filter.h:628 [inline]
bpf_prog_run include/linux/filter.h:635 [inline]
__bpf_trace_run kernel/trace/bpf_trace.c:1880 [inline]
bpf_trace_run2+0x19e/0x340 kernel/trace/bpf_trace.c:1917
trace_hrtimer_start include/trace/events/timer.h:199 [inline]
debug_activate kernel/time/hrtimer.c:476 [inline]
enqueue_hrtimer+0x324/0x390 kernel/time/hrtimer.c:1084
__run_hrtimer kernel/time/hrtimer.c:1703 [inline]
__hrtimer_run_queues+0x6b6/0xcf0 kernel/time/hrtimer.c:1750
hrtimer_interrupt+0x392/0x980 kernel/time/hrtimer.c:1812
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1085 [inline]
__sysvec_apic_timer_interrupt+0x139/0x470 arch/x86/kernel/apic/apic.c:1102
sysvec_apic_timer_interrupt+0x8c/0xb0 arch/x86/kernel/apic/apic.c:1096
</IRQ>
<TASK>
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:638
RIP: 0010:__might_sleep+0x0/0xc0 kernel/sched/core.c:9567
Code: fc ff ff 44 89 f9 80 e1 07 38 c1 0f 8c a8 fe ff ff 4c 89 ff e8 61 fa 70 00 e9 9b fe ff ff 66 2e 0f 1f 84 00 00 00 00 00 66 90 <55> 41 57 41 56 41 55 41 54 53 41 89 d6 41 89 f7 49 89 fc 49 bd 00
RSP: 0018:ffffc90002287c38 EFLAGS: 00000246
RAX: 0000000000000000 RBX: 0000000000000000 RCX: dffffc0000000000
RDX: 0000000000000000 RSI: 0000000000000039 RDI: ffffffff8a8cab80
RBP: ffffc90002287d30 R08: ffffffff8a253054 R09: ffffed100f179001
R10: 0000000000000000 R11: dffffc0000000001 R12: ffff888078bc802c
R13: dffffc0000000000 R14: ffffc90002287dc0 R15: ffffc90002287d80
try_to_freeze_unsafe include/linux/freezer.h:57 [inline]
try_to_freeze include/linux/freezer.h:67 [inline]
freezer_count include/linux/freezer.h:128 [inline]
freezable_schedule include/linux/freezer.h:173 [inline]
do_nanosleep+0x221/0x7b0 kernel/time/hrtimer.c:2045
hrtimer_nanosleep+0x24d/0x490 kernel/time/hrtimer.c:2098
__do_sys_nanosleep kernel/time/hrtimer.c:2133 [inline]
__se_sys_nanosleep kernel/time/hrtimer.c:2119 [inline]
__x64_sys_nanosleep+0x265/0x2c0 kernel/time/hrtimer.c:2119
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x61/0xcb
RIP: 0033:0x471e77
Code: 8b 44 24 20 b9 40 42 0f 00 f7 f1 48 89 04 24 b8 e8 03 00 00 f7 e2 48 89 44 24 08 48 89 e7 be 00 00 00 00 b8 23 00 00 00 0f 05 <48> 83 c4 10 5d c3 cc cc cc b8 ba 00 00 00 0f 05 89 44 24 08 c3 cc
RSP: 002b:000000c000069f18 EFLAGS: 00000202 ORIG_RAX: 0000000000000023
RAX: ffffffffffffffda RBX: 0000000000000014 RCX: 0000000000471e77
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000000c000069f18
RBP: 000000c000069f28 R08: 00000000000036bf R09: 0000000000000010
R10: 00007ffe777b4080 R11: 0000000000000202 R12: 000000c000069f18
R13: 000000c000059400 R14: 000000c0000064e0 R15: 0000000000000009
</TASK>
WARNING: CPU: 0 PID: 3497 at mm/maccess.c:226 copy_from_user_nofault+0x15c/0x1c0
Modules linked in:
CPU: 0 PID: 3497 Comm: syz-fuzzer Not tainted 5.15.153-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024
RIP: 0010:copy_from_user_nofault+0x15c/0x1c0 mm/maccess.c:226
Code: db 48 c7 c0 f2 ff ff ff 48 0f 44 c5 eb 0c e8 6b dc d5 ff 48 c7 c0 f2 ff ff ff 5b 41 5c 41 5d 41 5e 41 5f 5d c3 e8 54 dc d5 ff <0f> 0b e9 1e ff ff ff 89 d9 80 e1 07 80 c1 03 38 c1 0f 8c ef fe ff
RSP: 0018:ffffc90000007bd0 EFLAGS: 00010046

RAX: ffffffff81aa5d5c RBX: 0000000000000000 RCX: ffff888078bc8000
RDX: 0000000080010002 RSI: 0000000000000000 RDI: 0000000000000000
RBP: dffffc0000000000 R08: ffffffff81aa5c6d R09: ffffed100f179001
R10: 0000000000000000 R11: dffffc0000000001 R12: 0000000000000000
R13: 0000000000000008 R14: 0000000000000000 R15: ffffc90000007c48
FS: 000000c000058090(0000) GS:ffff8880b9a00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 0000000072359000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<IRQ>
bpf_probe_read_user_common kernel/trace/bpf_trace.c:157 [inline]
____bpf_probe_read_compat kernel/trace/bpf_trace.c:281 [inline]
bpf_probe_read_compat+0xe4/0x180 kernel/trace/bpf_trace.c:277
bpf_prog_ee60aafa828f4cb7+0x35/0x860
bpf_dispatcher_nop_func include/linux/bpf.h:785 [inline]
__bpf_prog_run include/linux/filter.h:628 [inline]
bpf_prog_run include/linux/filter.h:635 [inline]
__bpf_trace_run kernel/trace/bpf_trace.c:1880 [inline]
bpf_trace_run2+0x19e/0x340 kernel/trace/bpf_trace.c:1917
trace_hrtimer_start include/trace/events/timer.h:199 [inline]
debug_activate kernel/time/hrtimer.c:476 [inline]
enqueue_hrtimer+0x324/0x390 kernel/time/hrtimer.c:1084
__run_hrtimer kernel/time/hrtimer.c:1703 [inline]
__hrtimer_run_queues+0x6b6/0xcf0 kernel/time/hrtimer.c:1750
hrtimer_interrupt+0x392/0x980 kernel/time/hrtimer.c:1812
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1085 [inline]
__sysvec_apic_timer_interrupt+0x139/0x470 arch/x86/kernel/apic/apic.c:1102
sysvec_apic_timer_interrupt+0x8c/0xb0 arch/x86/kernel/apic/apic.c:1096
</IRQ>
<TASK>
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:638
RIP: 0010:__might_sleep+0x0/0xc0 kernel/sched/core.c:9567
Code: fc ff ff 44 89 f9 80 e1 07 38 c1 0f 8c a8 fe ff ff 4c 89 ff e8 61 fa 70 00 e9 9b fe ff ff 66 2e 0f 1f 84 00 00 00 00 00 66 90 <55> 41 57 41 56 41 55 41 54 53 41 89 d6 41 89 f7 49 89 fc 49 bd 00
RSP: 0018:ffffc90002287c38 EFLAGS: 00000246

RAX: 0000000000000000 RBX: 0000000000000000 RCX: dffffc0000000000
RDX: 0000000000000000 RSI: 0000000000000039 RDI: ffffffff8a8cab80
RBP: ffffc90002287d30 R08: ffffffff8a253054 R09: ffffed100f179001
R10: 0000000000000000 R11: dffffc0000000001 R12: ffff888078bc802c
R13: dffffc0000000000 R14: ffffc90002287dc0 R15: ffffc90002287d80
try_to_freeze_unsafe include/linux/freezer.h:57 [inline]
try_to_freeze include/linux/freezer.h:67 [inline]
freezer_count include/linux/freezer.h:128 [inline]
freezable_schedule include/linux/freezer.h:173 [inline]
do_nanosleep+0x221/0x7b0 kernel/time/hrtimer.c:2045
hrtimer_nanosleep+0x24d/0x490 kernel/time/hrtimer.c:2098
__do_sys_nanosleep kernel/time/hrtimer.c:2133 [inline]
__se_sys_nanosleep kernel/time/hrtimer.c:2119 [inline]
__x64_sys_nanosleep+0x265/0x2c0 kernel/time/hrtimer.c:2119
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x61/0xcb
RIP: 0033:0x471e77
Code: 8b 44 24 20 b9 40 42 0f 00 f7 f1 48 89 04 24 b8 e8 03 00 00 f7 e2 48 89 44 24 08 48 89 e7 be 00 00 00 00 b8 23 00 00 00 0f 05 <48> 83 c4 10 5d c3 cc cc cc b8 ba 00 00 00 0f 05 89 44 24 08 c3 cc
RSP: 002b:000000c000069f18 EFLAGS: 00000202
ORIG_RAX: 0000000000000023
RAX: ffffffffffffffda RBX: 0000000000000014 RCX: 0000000000471e77
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000000c000069f18
RBP: 000000c000069f28 R08: 00000000000036bf R09: 0000000000000010
R10: 00007ffe777b4080 R11: 0000000000000202 R12: 000000c000069f18
R13: 000000c000059400 R14: 000000c0000064e0 R15: 0000000000000009
</TASK>
irq event stamp: 1555238
hardirqs last enabled at (1555237): [<ffffffff815970ef>] raw_spin_rq_unlock_irq kernel/sched/sched.h:1338 [inline]
hardirqs last enabled at (1555237): [<ffffffff815970ef>] finish_lock_switch+0x8f/0x100 kernel/sched/core.c:4784
hardirqs last disabled at (1555238): [<ffffffff8a1bec7a>] sysvec_apic_timer_interrupt+0xa/0xb0 arch/x86/kernel/apic/apic.c:1096
softirqs last enabled at (1554956): [<ffffffff814d6515>] invoke_softirq kernel/softirq.c:432 [inline]
softirqs last enabled at (1554956): [<ffffffff814d6515>] __irq_exit_rcu+0x155/0x240 kernel/softirq.c:637
softirqs last disabled at (1554933): [<ffffffff814d6515>] invoke_softirq kernel/softirq.c:432 [inline]
softirqs last disabled at (1554933): [<ffffffff814d6515>] __irq_exit_rcu+0x155/0x240 kernel/softirq.c:637
---[ end trace ab98695efe398912 ]---
----------------
Code disassembly (best guess), 2 bytes skipped:
0: ff 44 89 f9 incl -0x7(%rcx,%rcx,4)
4: 80 e1 07 and $0x7,%cl
7: 38 c1 cmp %al,%cl
9: 0f 8c a8 fe ff ff jl 0xfffffeb7
f: 4c 89 ff mov %r15,%rdi
12: e8 61 fa 70 00 call 0x70fa78
17: e9 9b fe ff ff jmp 0xfffffeb7
1c: 66 2e 0f 1f 84 00 00 cs nopw 0x0(%rax,%rax,1)
23: 00 00 00
26: 66 90 xchg %ax,%ax
* 28: 55 push %rbp <-- trapping instruction
29: 41 57 push %r15
2b: 41 56 push %r14
2d: 41 55 push %r13
2f: 41 54 push %r12
31: 53 push %rbx
32: 41 89 d6 mov %edx,%r14d
35: 41 89 f7 mov %esi,%r15d
38: 49 89 fc mov %rdi,%r12
3b: 49 rex.WB
3c: bd .byte 0xbd


---
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

syzbot

unread,
Apr 2, 2024, 3:14:25 PMApr 2
to syzkaller...@googlegroups.com
Hello,

syzbot found the following issue on:

HEAD commit: e5cd595e23c1 Linux 6.1.83
git tree: linux-6.1.y
console output: https://syzkaller.appspot.com/x/log.txt?x=1629cc71180000
kernel config: https://syzkaller.appspot.com/x/.config?x=99d0cbbc2b2c7cfd
dashboard link: https://syzkaller.appspot.com/bug?extid=79106cee474c774bb6eb
compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40

Unfortunately, I don't have any reproducer for this issue yet.

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/cd28292a2eef/disk-e5cd595e.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/e8297fd856b2/vmlinux-e5cd595e.xz
kernel image: https://storage.googleapis.com/syzbot-assets/ea8c74634429/bzImage-e5cd595e.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+79106c...@syzkaller.appspotmail.com

------------[ cut here ]------------
======================================================
WARNING: possible circular locking dependency detected
6.1.83-syzkaller #0 Not tainted
------------------------------------------------------
syz-executor.1/3558 is trying to acquire lock:
ffffffff8d006ad8 ((console_sem).lock){-.-.}-{2:2}, at: down_trylock+0x1c/0xa0 kernel/locking/semaphore.c:139

but task is already holding lock:
ffff8880b982a4d8 (hrtimer_bases.lock){-.-.}-{2:2}, at: __run_hrtimer kernel/time/hrtimer.c:1690 [inline]
ffff8880b982a4d8 (hrtimer_bases.lock){-.-.}-{2:2}, at: __hrtimer_run_queues+0x6d3/0xe50 kernel/time/hrtimer.c:1750

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #4 (hrtimer_bases.lock){-.-.}-{2:2}:
lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
lock_hrtimer_base kernel/time/hrtimer.c:173 [inline]
hrtimer_start_range_ns+0xd8/0xc50 kernel/time/hrtimer.c:1297
hrtimer_start_expires include/linux/hrtimer.h:434 [inline]
do_start_rt_bandwidth kernel/sched/rt.c:120 [inline]
start_rt_bandwidth kernel/sched/rt.c:131 [inline]
inc_rt_group kernel/sched/rt.c:1245 [inline]
inc_rt_tasks kernel/sched/rt.c:1289 [inline]
__enqueue_rt_entity kernel/sched/rt.c:1465 [inline]
enqueue_rt_entity kernel/sched/rt.c:1514 [inline]
enqueue_task_rt+0x6a8/0xf80 kernel/sched/rt.c:1549
enqueue_task+0x181/0x3a0 kernel/sched/core.c:2060
activate_task kernel/sched/core.c:2088 [inline]
ttwu_do_activate+0x1b4/0x370 kernel/sched/core.c:3700
sched_ttwu_pending+0x34e/0x730 kernel/sched/core.c:3775
__flush_smp_call_function_queue+0x771/0xd00 kernel/smp.c:691
__sysvec_call_function_single+0xbb/0x360 arch/x86/kernel/smp.c:267
sysvec_call_function_single+0x89/0xb0 arch/x86/kernel/smp.c:262
asm_sysvec_call_function_single+0x16/0x20 arch/x86/include/asm/idtentry.h:661
native_safe_halt arch/x86/include/asm/irqflags.h:51 [inline]
arch_safe_halt arch/x86/include/asm/irqflags.h:89 [inline]
acpi_safe_halt drivers/acpi/processor_idle.c:112 [inline]
acpi_idle_do_entry+0x10f/0x340 drivers/acpi/processor_idle.c:572
acpi_idle_enter+0x352/0x4f0 drivers/acpi/processor_idle.c:709
cpuidle_enter_state+0x516/0xf80 drivers/cpuidle/cpuidle.c:239
cpuidle_enter+0x59/0x90 drivers/cpuidle/cpuidle.c:356
call_cpuidle kernel/sched/idle.c:155 [inline]
cpuidle_idle_call kernel/sched/idle.c:236 [inline]
do_idle+0x3ce/0x680 kernel/sched/idle.c:303
cpu_startup_entry+0x3d/0x60 kernel/sched/idle.c:401
start_secondary+0xe4/0xf0 arch/x86/kernel/smpboot.c:281
secondary_startup_64_no_verify+0xcf/0xdb

-> #3 (&rt_b->rt_runtime_lock){-.-.}-{2:2}:
lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
__raw_spin_lock include/linux/spinlock_api_smp.h:133 [inline]
_raw_spin_lock+0x2a/0x40 kernel/locking/spinlock.c:154
__enable_runtime kernel/sched/rt.c:880 [inline]
rq_online_rt+0x13c/0x340 kernel/sched/rt.c:2493
set_rq_online kernel/sched/core.c:9331 [inline]
sched_cpu_activate+0x45c/0x7c0 kernel/sched/core.c:9439
cpuhp_invoke_callback+0x49f/0x820 kernel/cpu.c:192
cpuhp_thread_fun+0x418/0x800 kernel/cpu.c:837
smpboot_thread_fn+0x52c/0xa30 kernel/smpboot.c:164
kthread+0x28d/0x320 kernel/kthread.c:376
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:307

-> #2 (&rq->__lock){-.-.}-{2:2}:
lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
_raw_spin_lock_nested+0x2d/0x40 kernel/locking/spinlock.c:378
raw_spin_rq_lock_nested+0x26/0x140 kernel/sched/core.c:537
raw_spin_rq_lock kernel/sched/sched.h:1354 [inline]
rq_lock kernel/sched/sched.h:1644 [inline]
task_fork_fair+0x5d/0x350 kernel/sched/fair.c:11869
sched_cgroup_fork+0x374/0x400 kernel/sched/core.c:4686
copy_process+0x2442/0x4060 kernel/fork.c:2384
kernel_clone+0x222/0x920 kernel/fork.c:2682
user_mode_thread+0x12e/0x190 kernel/fork.c:2758
rest_init+0x23/0x300 init/main.c:697
start_kernel+0x0/0x53f init/main.c:892
start_kernel+0x496/0x53f init/main.c:1139
secondary_startup_64_no_verify+0xcf/0xdb

-> #1 (&p->pi_lock){-.-.}-{2:2}:
lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
try_to_wake_up+0xad/0x12e0 kernel/sched/core.c:4112
up+0x6e/0x90 kernel/locking/semaphore.c:191
__up_console_sem+0x11a/0x1e0 kernel/printk/printk.c:260
__console_unlock kernel/printk/printk.c:2691 [inline]
console_unlock+0x591/0x7c0 kernel/printk/printk.c:2902
do_con_write+0x7182/0x7270 drivers/tty/vt/vt.c:2965
con_write+0x20/0x40 drivers/tty/vt/vt.c:3295
process_output_block drivers/tty/n_tty.c:586 [inline]
n_tty_write+0xd7f/0x1260 drivers/tty/n_tty.c:2367
do_tty_write drivers/tty/tty_io.c:1018 [inline]
file_tty_write+0x504/0x890 drivers/tty/tty_io.c:1089
call_write_iter include/linux/fs.h:2265 [inline]
new_sync_write fs/read_write.c:491 [inline]
vfs_write+0x7ae/0xba0 fs/read_write.c:584
ksys_write+0x19c/0x2c0 fs/read_write.c:637
do_syscall_x64 arch/x86/entry/common.c:51 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:81
entry_SYSCALL_64_after_hwframe+0x63/0xcd

-> #0 ((console_sem).lock){-.-.}-{2:2}:
check_prev_add kernel/locking/lockdep.c:3090 [inline]
check_prevs_add kernel/locking/lockdep.c:3209 [inline]
validate_chain+0x1661/0x5950 kernel/locking/lockdep.c:3825
__lock_acquire+0x125b/0x1f80 kernel/locking/lockdep.c:5049
lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
down_trylock+0x1c/0xa0 kernel/locking/semaphore.c:139
__down_trylock_console_sem+0x105/0x250 kernel/printk/printk.c:243
console_trylock kernel/printk/printk.c:2644 [inline]
console_trylock_spinning kernel/printk/printk.c:1896 [inline]
vprintk_emit+0x1ee/0x740 kernel/printk/printk.c:2296
_printk+0xd1/0x111 kernel/printk/printk.c:2322
__report_bug lib/bug.c:195 [inline]
report_bug+0x342/0x500 lib/bug.c:219
handle_bug+0x3d/0x70 arch/x86/kernel/traps.c:324
exc_invalid_op+0x16/0x40 arch/x86/kernel/traps.c:345
asm_exc_invalid_op+0x16/0x20 arch/x86/include/asm/idtentry.h:568
__local_bh_disable_ip+0x1ec/0x210 kernel/softirq.c:345
__raw_spin_lock_bh include/linux/spinlock_api_smp.h:125 [inline]
_raw_spin_lock_bh+0x18/0x40 kernel/locking/spinlock.c:178
__sock_map_delete net/core/sock_map.c:416 [inline]
sock_map_delete_elem+0x97/0x130 net/core/sock_map.c:448
bpf_prog_2c29ac5cdc6b1842+0x3a/0x3e
bpf_dispatcher_nop_func include/linux/bpf.h:989 [inline]
__bpf_prog_run include/linux/filter.h:603 [inline]
bpf_prog_run include/linux/filter.h:610 [inline]
__bpf_trace_run kernel/trace/bpf_trace.c:2273 [inline]
bpf_trace_run4+0x253/0x470 kernel/trace/bpf_trace.c:2314
__bpf_trace_mm_page_alloc+0xba/0xe0 include/trace/events/kmem.h:177
trace_mm_page_alloc include/trace/events/kmem.h:177 [inline]
__alloc_pages+0x717/0x770 mm/page_alloc.c:5567
alloc_slab_page+0x6a/0x150 mm/slub.c:1794
allocate_slab mm/slub.c:1939 [inline]
new_slab+0x84/0x2d0 mm/slub.c:1992
___slab_alloc+0xc20/0x1270 mm/slub.c:3180
__slab_alloc mm/slub.c:3279 [inline]
slab_alloc_node mm/slub.c:3364 [inline]
slab_alloc mm/slub.c:3406 [inline]
__kmem_cache_alloc_lru mm/slub.c:3413 [inline]
kmem_cache_alloc+0x1a5/0x2d0 mm/slub.c:3422
kmem_cache_zalloc include/linux/slab.h:682 [inline]
fill_pool lib/debugobjects.c:168 [inline]
debug_objects_fill_pool+0x76d/0xa10 lib/debugobjects.c:606
debug_object_activate+0x32/0x4e0 lib/debugobjects.c:693
debug_hrtimer_activate kernel/time/hrtimer.c:420 [inline]
debug_activate kernel/time/hrtimer.c:475 [inline]
enqueue_hrtimer+0x30/0x410 kernel/time/hrtimer.c:1084
__run_hrtimer kernel/time/hrtimer.c:1703 [inline]
__hrtimer_run_queues+0x728/0xe50 kernel/time/hrtimer.c:1750
hrtimer_interrupt+0x392/0x980 kernel/time/hrtimer.c:1812
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1095 [inline]
__sysvec_apic_timer_interrupt+0x156/0x580 arch/x86/kernel/apic/apic.c:1112
sysvec_apic_timer_interrupt+0x8c/0xb0 arch/x86/kernel/apic/apic.c:1106
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:653
bpf_tree_comp kernel/bpf/core.c:622 [inline]
__lt_find include/linux/rbtree_latch.h:115 [inline]
latch_tree_find include/linux/rbtree_latch.h:208 [inline]
bpf_ksym_find kernel/bpf/core.c:698 [inline]
is_bpf_text_address+0x122/0x2a0 kernel/bpf/core.c:732
kernel_text_address+0x9f/0xd0 kernel/extable.c:125
__kernel_text_address+0x9/0x40 kernel/extable.c:79
unwind_get_return_address+0x49/0x80 arch/x86/kernel/unwind_orc.c:323
arch_stack_walk+0xf3/0x140 arch/x86/kernel/stacktrace.c:26
stack_trace_save+0x113/0x1c0 kernel/stacktrace.c:122
kasan_save_stack mm/kasan/common.c:45 [inline]
kasan_set_track+0x4b/0x70 mm/kasan/common.c:52
__kasan_slab_alloc+0x65/0x70 mm/kasan/common.c:328
kasan_slab_alloc include/linux/kasan.h:201 [inline]
slab_post_alloc_hook+0x52/0x3a0 mm/slab.h:737
slab_alloc_node mm/slub.c:3398 [inline]
slab_alloc mm/slub.c:3406 [inline]
__kmem_cache_alloc_lru mm/slub.c:3413 [inline]
kmem_cache_alloc+0x10c/0x2d0 mm/slub.c:3422
kmem_cache_zalloc include/linux/slab.h:682 [inline]
fill_pool lib/debugobjects.c:168 [inline]
debug_objects_fill_pool+0x68f/0xa10 lib/debugobjects.c:606
debug_object_activate+0x32/0x4e0 lib/debugobjects.c:693
debug_rcu_head_queue kernel/rcu/rcu.h:189 [inline]
call_rcu+0x93/0xa10 kernel/rcu/tree.c:2829
do_unlinkat+0x509/0x820 fs/namei.c:4399
__do_sys_unlink fs/namei.c:4440 [inline]
__se_sys_unlink fs/namei.c:4438 [inline]
__x64_sys_unlink+0x45/0x50 fs/namei.c:4438
do_syscall_x64 arch/x86/entry/common.c:51 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:81
entry_SYSCALL_64_after_hwframe+0x63/0xcd

other info that might help us debug this:

Chain exists of:
(console_sem).lock --> &rt_b->rt_runtime_lock --> hrtimer_bases.lock

Possible unsafe locking scenario:

CPU0 CPU1
---- ----
lock(hrtimer_bases.lock);
lock(&rt_b->rt_runtime_lock);
lock(hrtimer_bases.lock);
lock((console_sem).lock);

*** DEADLOCK ***

4 locks held by syz-executor.1/3558:
#0: ffff88807f344460 (sb_writers#4){.+.+}-{0:0}, at: mnt_want_write+0x3b/0x80 fs/namespace.c:393
#1: ffffffff8d12a940 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:350 [inline]
#1: ffffffff8d12a940 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:791 [inline]
#1: ffffffff8d12a940 (rcu_read_lock){....}-{1:2}, at: is_bpf_text_address+0x22/0x2a0 kernel/bpf/core.c:731
#2: ffff8880b982a4d8 (hrtimer_bases.lock){-.-.}-{2:2}, at: __run_hrtimer kernel/time/hrtimer.c:1690 [inline]
#2: ffff8880b982a4d8 (hrtimer_bases.lock){-.-.}-{2:2}, at: __hrtimer_run_queues+0x6d3/0xe50 kernel/time/hrtimer.c:1750
#3: ffffffff8d12a940 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:350 [inline]
#3: ffffffff8d12a940 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:791 [inline]
#3: ffffffff8d12a940 (rcu_read_lock){....}-{1:2}, at: __bpf_trace_run kernel/trace/bpf_trace.c:2272 [inline]
#3: ffffffff8d12a940 (rcu_read_lock){....}-{1:2}, at: bpf_trace_run4+0x16a/0x470 kernel/trace/bpf_trace.c:2314

stack backtrace:
CPU: 0 PID: 3558 Comm: syz-executor.1 Not tainted 6.1.83-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
Call Trace:
<IRQ>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x1e3/0x2cb lib/dump_stack.c:106
check_noncircular+0x2fa/0x3b0 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+0x1661/0x5950 kernel/locking/lockdep.c:3825
__lock_acquire+0x125b/0x1f80 kernel/locking/lockdep.c:5049
lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
down_trylock+0x1c/0xa0 kernel/locking/semaphore.c:139
__down_trylock_console_sem+0x105/0x250 kernel/printk/printk.c:243
console_trylock kernel/printk/printk.c:2644 [inline]
console_trylock_spinning kernel/printk/printk.c:1896 [inline]
vprintk_emit+0x1ee/0x740 kernel/printk/printk.c:2296
_printk+0xd1/0x111 kernel/printk/printk.c:2322
__report_bug lib/bug.c:195 [inline]
report_bug+0x342/0x500 lib/bug.c:219
handle_bug+0x3d/0x70 arch/x86/kernel/traps.c:324
exc_invalid_op+0x16/0x40 arch/x86/kernel/traps.c:345
asm_exc_invalid_op+0x16/0x20 arch/x86/include/asm/idtentry.h:568
RIP: 0010:__local_bh_disable_ip+0x1ec/0x210 kernel/softirq.c:321
Code: 00 00 43 c6 44 2c 0b 00 65 48 8b 04 25 28 00 00 00 48 3b 84 24 80 00 00 00 75 2d 48 8d 65 d8 5b 41 5c 41 5d 41 5e 41 5f 5d c3 <0f> 0b e9 a0 fe ff ff e8 f8 de 35 09 41 f7 c6 00 02 00 00 0f 85 52
RSP: 0018:ffffc900000075e0 EFLAGS: 00010006
RAX: 0000000080010002 RBX: ffffffff8897be87 RCX: ffff888028a19dc0
RDX: ffff888028a19dc0 RSI: 0000000000000201 RDI: ffffffff8897be87
RBP: ffffc900000076c0 R08: ffffffff8897be4b R09: fffffbfff2092e45
R10: 0000000000000000 R11: dffffc0000000001 R12: dffffc0000000000
R13: 1ffff92000000ec0 R14: ffffc90000007640 R15: 0000000000000201
__raw_spin_lock_bh include/linux/spinlock_api_smp.h:125 [inline]
_raw_spin_lock_bh+0x18/0x40 kernel/locking/spinlock.c:178
__sock_map_delete net/core/sock_map.c:416 [inline]
sock_map_delete_elem+0x97/0x130 net/core/sock_map.c:448
bpf_prog_2c29ac5cdc6b1842+0x3a/0x3e
bpf_dispatcher_nop_func include/linux/bpf.h:989 [inline]
__bpf_prog_run include/linux/filter.h:603 [inline]
bpf_prog_run include/linux/filter.h:610 [inline]
__bpf_trace_run kernel/trace/bpf_trace.c:2273 [inline]
bpf_trace_run4+0x253/0x470 kernel/trace/bpf_trace.c:2314
__bpf_trace_mm_page_alloc+0xba/0xe0 include/trace/events/kmem.h:177
trace_mm_page_alloc include/trace/events/kmem.h:177 [inline]
__alloc_pages+0x717/0x770 mm/page_alloc.c:5567
alloc_slab_page+0x6a/0x150 mm/slub.c:1794
allocate_slab mm/slub.c:1939 [inline]
new_slab+0x84/0x2d0 mm/slub.c:1992
___slab_alloc+0xc20/0x1270 mm/slub.c:3180
__slab_alloc mm/slub.c:3279 [inline]
slab_alloc_node mm/slub.c:3364 [inline]
slab_alloc mm/slub.c:3406 [inline]
__kmem_cache_alloc_lru mm/slub.c:3413 [inline]
kmem_cache_alloc+0x1a5/0x2d0 mm/slub.c:3422
kmem_cache_zalloc include/linux/slab.h:682 [inline]
fill_pool lib/debugobjects.c:168 [inline]
debug_objects_fill_pool+0x76d/0xa10 lib/debugobjects.c:606
debug_object_activate+0x32/0x4e0 lib/debugobjects.c:693
debug_hrtimer_activate kernel/time/hrtimer.c:420 [inline]
debug_activate kernel/time/hrtimer.c:475 [inline]
enqueue_hrtimer+0x30/0x410 kernel/time/hrtimer.c:1084
__run_hrtimer kernel/time/hrtimer.c:1703 [inline]
__hrtimer_run_queues+0x728/0xe50 kernel/time/hrtimer.c:1750
hrtimer_interrupt+0x392/0x980 kernel/time/hrtimer.c:1812
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1095 [inline]
__sysvec_apic_timer_interrupt+0x156/0x580 arch/x86/kernel/apic/apic.c:1112
sysvec_apic_timer_interrupt+0x8c/0xb0 arch/x86/kernel/apic/apic.c:1106
</IRQ>
<TASK>
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:653
RIP: 0010:bpf_tree_comp kernel/bpf/core.c:622 [inline]
RIP: 0010:__lt_find include/linux/rbtree_latch.h:115 [inline]
RIP: 0010:latch_tree_find include/linux/rbtree_latch.h:208 [inline]
RIP: 0010:bpf_ksym_find kernel/bpf/core.c:698 [inline]
RIP: 0010:is_bpf_text_address+0x122/0x2a0 kernel/bpf/core.c:732
Code: 1b 48 85 db 0f 84 b6 00 00 00 48 c1 e5 03 48 8d 6c 6d 00 48 f7 dd 4c 8d a4 2b e0 fd ff ff 4c 89 e0 48 c1 e8 03 42 80 3c 28 00 <74> 08 4c 89 e7 e8 d4 55 4a 00 4d 8b 24 24 4c 89 e7 4c 89 fe e8 35
RSP: 0018:ffffc90003fff548 EFLAGS: 00000246
RAX: 1ffffffff1c53737 RBX: ffffffff8e29bbd8 RCX: ffff888028a19dc0
RDX: 0000000000000000 RSI: ffffffff8b3d2b20 RDI: ffffffff8b3d2ae0
RBP: 0000000000000000 R08: ffffffff8197a3b2 R09: fffffbfff2092e45
R10: 0000000000000000 R11: dffffc0000000001 R12: ffffffff8e29b9b8
R13: dffffc0000000000 R14: 0000000000000001 R15: 00007f550e87d557
kernel_text_address+0x9f/0xd0 kernel/extable.c:125
__kernel_text_address+0x9/0x40 kernel/extable.c:79
unwind_get_return_address+0x49/0x80 arch/x86/kernel/unwind_orc.c:323
arch_stack_walk+0xf3/0x140 arch/x86/kernel/stacktrace.c:26
stack_trace_save+0x113/0x1c0 kernel/stacktrace.c:122
kasan_save_stack mm/kasan/common.c:45 [inline]
kasan_set_track+0x4b/0x70 mm/kasan/common.c:52
__kasan_slab_alloc+0x65/0x70 mm/kasan/common.c:328
kasan_slab_alloc include/linux/kasan.h:201 [inline]
slab_post_alloc_hook+0x52/0x3a0 mm/slab.h:737
slab_alloc_node mm/slub.c:3398 [inline]
slab_alloc mm/slub.c:3406 [inline]
__kmem_cache_alloc_lru mm/slub.c:3413 [inline]
kmem_cache_alloc+0x10c/0x2d0 mm/slub.c:3422
kmem_cache_zalloc include/linux/slab.h:682 [inline]
fill_pool lib/debugobjects.c:168 [inline]
debug_objects_fill_pool+0x68f/0xa10 lib/debugobjects.c:606
debug_object_activate+0x32/0x4e0 lib/debugobjects.c:693
debug_rcu_head_queue kernel/rcu/rcu.h:189 [inline]
call_rcu+0x93/0xa10 kernel/rcu/tree.c:2829
do_unlinkat+0x509/0x820 fs/namei.c:4399
__do_sys_unlink fs/namei.c:4440 [inline]
__se_sys_unlink fs/namei.c:4438 [inline]
__x64_sys_unlink+0x45/0x50 fs/namei.c:4438
do_syscall_x64 arch/x86/entry/common.c:51 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:81
entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f550e87d557
Code: 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 b8 57 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fff46593de8 EFLAGS: 00000206 ORIG_RAX: 0000000000000057
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f550e87d557
RDX: 00007fff46593e10 RSI: 00007fff46593ea0 RDI: 00007fff46593ea0
RBP: 00007fff46593ea0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000100 R11: 0000000000000206 R12: 00007fff46594f60
R13: 00007f550e8c93b9 R14: 000000000006611d R15: 0000000000000002
</TASK>
WARNING: CPU: 0 PID: 3558 at kernel/softirq.c:321 __local_bh_disable_ip+0x1ec/0x210 kernel/softirq.c:345
Modules linked in:
CPU: 0 PID: 3558 Comm: syz-executor.1 Not tainted 6.1.83-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
RIP: 0010:__local_bh_disable_ip+0x1ec/0x210 kernel/softirq.c:321
Code: 00 00 43 c6 44 2c 0b 00 65 48 8b 04 25 28 00 00 00 48 3b 84 24 80 00 00 00 75 2d 48 8d 65 d8 5b 41 5c 41 5d 41 5e 41 5f 5d c3 <0f> 0b e9 a0 fe ff ff e8 f8 de 35 09 41 f7 c6 00 02 00 00 0f 85 52
RSP: 0018:ffffc900000075e0 EFLAGS: 00010006
RAX: 0000000080010002 RBX: ffffffff8897be87 RCX: ffff888028a19dc0
RDX: ffff888028a19dc0 RSI: 0000000000000201 RDI: ffffffff8897be87
RBP: ffffc900000076c0 R08: ffffffff8897be4b R09: fffffbfff2092e45
R10: 0000000000000000 R11: dffffc0000000001 R12: dffffc0000000000
R13: 1ffff92000000ec0 R14: ffffc90000007640 R15: 0000000000000201
FS: 00005555556d3480(0000) GS:ffff8880b9800000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00005555556dc938 CR3: 000000005f9b5000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<IRQ>
__raw_spin_lock_bh include/linux/spinlock_api_smp.h:125 [inline]
_raw_spin_lock_bh+0x18/0x40 kernel/locking/spinlock.c:178
__sock_map_delete net/core/sock_map.c:416 [inline]
sock_map_delete_elem+0x97/0x130 net/core/sock_map.c:448
bpf_prog_2c29ac5cdc6b1842+0x3a/0x3e
bpf_dispatcher_nop_func include/linux/bpf.h:989 [inline]
__bpf_prog_run include/linux/filter.h:603 [inline]
bpf_prog_run include/linux/filter.h:610 [inline]
__bpf_trace_run kernel/trace/bpf_trace.c:2273 [inline]
bpf_trace_run4+0x253/0x470 kernel/trace/bpf_trace.c:2314
__bpf_trace_mm_page_alloc+0xba/0xe0 include/trace/events/kmem.h:177
trace_mm_page_alloc include/trace/events/kmem.h:177 [inline]
__alloc_pages+0x717/0x770 mm/page_alloc.c:5567
alloc_slab_page+0x6a/0x150 mm/slub.c:1794
allocate_slab mm/slub.c:1939 [inline]
new_slab+0x84/0x2d0 mm/slub.c:1992
___slab_alloc+0xc20/0x1270 mm/slub.c:3180
__slab_alloc mm/slub.c:3279 [inline]
slab_alloc_node mm/slub.c:3364 [inline]
slab_alloc mm/slub.c:3406 [inline]
__kmem_cache_alloc_lru mm/slub.c:3413 [inline]
kmem_cache_alloc+0x1a5/0x2d0 mm/slub.c:3422
kmem_cache_zalloc include/linux/slab.h:682 [inline]
fill_pool lib/debugobjects.c:168 [inline]
debug_objects_fill_pool+0x76d/0xa10 lib/debugobjects.c:606
debug_object_activate+0x32/0x4e0 lib/debugobjects.c:693
debug_hrtimer_activate kernel/time/hrtimer.c:420 [inline]
debug_activate kernel/time/hrtimer.c:475 [inline]
enqueue_hrtimer+0x30/0x410 kernel/time/hrtimer.c:1084
__run_hrtimer kernel/time/hrtimer.c:1703 [inline]
__hrtimer_run_queues+0x728/0xe50 kernel/time/hrtimer.c:1750
hrtimer_interrupt+0x392/0x980 kernel/time/hrtimer.c:1812
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1095 [inline]
__sysvec_apic_timer_interrupt+0x156/0x580 arch/x86/kernel/apic/apic.c:1112
sysvec_apic_timer_interrupt+0x8c/0xb0 arch/x86/kernel/apic/apic.c:1106
</IRQ>
<TASK>
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:653
RIP: 0010:bpf_tree_comp kernel/bpf/core.c:622 [inline]
RIP: 0010:__lt_find include/linux/rbtree_latch.h:115 [inline]
RIP: 0010:latch_tree_find include/linux/rbtree_latch.h:208 [inline]
RIP: 0010:bpf_ksym_find kernel/bpf/core.c:698 [inline]
RIP: 0010:is_bpf_text_address+0x122/0x2a0 kernel/bpf/core.c:732
Code: 1b 48 85 db 0f 84 b6 00 00 00 48 c1 e5 03 48 8d 6c 6d 00 48 f7 dd 4c 8d a4 2b e0 fd ff ff 4c 89 e0 48 c1 e8 03 42 80 3c 28 00 <74> 08 4c 89 e7 e8 d4 55 4a 00 4d 8b 24 24 4c 89 e7 4c 89 fe e8 35
RSP: 0018:ffffc90003fff548 EFLAGS: 00000246
RAX: 1ffffffff1c53737 RBX: ffffffff8e29bbd8 RCX: ffff888028a19dc0
RDX: 0000000000000000 RSI: ffffffff8b3d2b20 RDI: ffffffff8b3d2ae0
RBP: 0000000000000000 R08: ffffffff8197a3b2 R09: fffffbfff2092e45
R10: 0000000000000000 R11: dffffc0000000001 R12: ffffffff8e29b9b8
R13: dffffc0000000000 R14: 0000000000000001 R15: 00007f550e87d557
kernel_text_address+0x9f/0xd0 kernel/extable.c:125
__kernel_text_address+0x9/0x40 kernel/extable.c:79
unwind_get_return_address+0x49/0x80 arch/x86/kernel/unwind_orc.c:323
arch_stack_walk+0xf3/0x140 arch/x86/kernel/stacktrace.c:26
stack_trace_save+0x113/0x1c0 kernel/stacktrace.c:122
kasan_save_stack mm/kasan/common.c:45 [inline]
kasan_set_track+0x4b/0x70 mm/kasan/common.c:52
__kasan_slab_alloc+0x65/0x70 mm/kasan/common.c:328
kasan_slab_alloc include/linux/kasan.h:201 [inline]
slab_post_alloc_hook+0x52/0x3a0 mm/slab.h:737
slab_alloc_node mm/slub.c:3398 [inline]
slab_alloc mm/slub.c:3406 [inline]
__kmem_cache_alloc_lru mm/slub.c:3413 [inline]
kmem_cache_alloc+0x10c/0x2d0 mm/slub.c:3422
kmem_cache_zalloc include/linux/slab.h:682 [inline]
fill_pool lib/debugobjects.c:168 [inline]
debug_objects_fill_pool+0x68f/0xa10 lib/debugobjects.c:606
debug_object_activate+0x32/0x4e0 lib/debugobjects.c:693
debug_rcu_head_queue kernel/rcu/rcu.h:189 [inline]
call_rcu+0x93/0xa10 kernel/rcu/tree.c:2829
do_unlinkat+0x509/0x820 fs/namei.c:4399
__do_sys_unlink fs/namei.c:4440 [inline]
__se_sys_unlink fs/namei.c:4438 [inline]
__x64_sys_unlink+0x45/0x50 fs/namei.c:4438
do_syscall_x64 arch/x86/entry/common.c:51 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:81
entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f550e87d557
Code: 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 b8 57 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fff46593de8 EFLAGS: 00000206 ORIG_RAX: 0000000000000057
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f550e87d557
RDX: 00007fff46593e10 RSI: 00007fff46593ea0 RDI: 00007fff46593ea0
RBP: 00007fff46593ea0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000100 R11: 0000000000000206 R12: 00007fff46594f60
R13: 00007f550e8c93b9 R14: 000000000006611d R15: 0000000000000002
</TASK>
----------------
Code disassembly (best guess):
0: 1b 48 85 sbb -0x7b(%rax),%ecx
3: db 0f fisttpl (%rdi)
5: 84 b6 00 00 00 48 test %dh,0x48000000(%rsi)
b: c1 e5 03 shl $0x3,%ebp
e: 48 8d 6c 6d 00 lea 0x0(%rbp,%rbp,2),%rbp
13: 48 f7 dd neg %rbp
16: 4c 8d a4 2b e0 fd ff lea -0x220(%rbx,%rbp,1),%r12
1d: ff
1e: 4c 89 e0 mov %r12,%rax
21: 48 c1 e8 03 shr $0x3,%rax
25: 42 80 3c 28 00 cmpb $0x0,(%rax,%r13,1)
* 2a: 74 08 je 0x34 <-- trapping instruction
2c: 4c 89 e7 mov %r12,%rdi
2f: e8 d4 55 4a 00 call 0x4a5608
34: 4d 8b 24 24 mov (%r12),%r12
38: 4c 89 e7 mov %r12,%rdi
3b: 4c 89 fe mov %r15,%rsi
3e: e8 .byte 0xe8
3f: 35 .byte 0x35

syzbot

unread,
Apr 9, 2024, 7:49:20 AMApr 9
to syzkaller...@googlegroups.com
syzbot has found a reproducer for the following issue on:

HEAD commit: 347385861c50 Linux 6.1.84
git tree: linux-6.1.y
console output: https://syzkaller.appspot.com/x/log.txt?x=122f5413180000
kernel config: https://syzkaller.appspot.com/x/.config?x=40dfd13b04bfc094
dashboard link: https://syzkaller.appspot.com/bug?extid=79106cee474c774bb6eb
compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=16c46699180000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=171d2389180000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/584c64d6360b/disk-34738586.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/ebe1b8334610/vmlinux-34738586.xz
kernel image: https://storage.googleapis.com/syzbot-assets/e3d485b54a02/bzImage-34738586.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+79106c...@syzkaller.appspotmail.com

------------[ cut here ]------------
======================================================
WARNING: possible circular locking dependency detected
6.1.84-syzkaller #0 Not tainted
------------------------------------------------------
swapper/1/0 is trying to acquire lock:
ffffffff8d006b38 ((console_sem).lock){-...}-{2:2}, at: down_trylock+0x1c/0xa0 kernel/locking/semaphore.c:139

but task is already holding lock:
ffff8880b992a4d8 (hrtimer_bases.lock){-.-.}-{2:2}, at: __run_hrtimer kernel/time/hrtimer.c:1690 [inline]
ffff8880b992a4d8 (hrtimer_bases.lock){-.-.}-{2:2}, at: __hrtimer_run_queues+0x6d3/0xe50 kernel/time/hrtimer.c:1750
-> #3 (&rt_b->rt_runtime_lock){-...}-{2:2}:
__console_unlock kernel/printk/printk.c:2697 [inline]
console_unlock+0x591/0x7c0 kernel/printk/printk.c:2908
vprintk_emit+0x523/0x740 kernel/printk/printk.c:2303
dev_vprintk_emit+0x2aa/0x323 drivers/base/core.c:4902
dev_printk_emit+0xd9/0x118 drivers/base/core.c:4913
_dev_warn+0x11e/0x165 drivers/base/core.c:4969
firmware_fallback_sysfs+0x674/0x940 drivers/base/firmware_loader/fallback.c:229
_request_firmware+0xc13/0x1200 drivers/base/firmware_loader/main.c:856
request_firmware_work_func+0x126/0x270 drivers/base/firmware_loader/main.c:1105
process_one_work+0x8a9/0x11d0 kernel/workqueue.c:2292
worker_thread+0xa47/0x1200 kernel/workqueue.c:2439
kthread+0x28d/0x320 kernel/kthread.c:376
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:307

-> #0 ((console_sem).lock){-...}-{2:2}:
check_prev_add kernel/locking/lockdep.c:3090 [inline]
check_prevs_add kernel/locking/lockdep.c:3209 [inline]
validate_chain+0x1661/0x5950 kernel/locking/lockdep.c:3825
__lock_acquire+0x125b/0x1f80 kernel/locking/lockdep.c:5049
lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
down_trylock+0x1c/0xa0 kernel/locking/semaphore.c:139
__down_trylock_console_sem+0x105/0x250 kernel/printk/printk.c:243
console_trylock kernel/printk/printk.c:2650 [inline]
console_trylock_spinning kernel/printk/printk.c:1896 [inline]
vprintk_emit+0x1ee/0x740 kernel/printk/printk.c:2302
_printk+0xd1/0x111 kernel/printk/printk.c:2328
__report_bug lib/bug.c:195 [inline]
report_bug+0x342/0x500 lib/bug.c:219
handle_bug+0x3d/0x70 arch/x86/kernel/traps.c:324
exc_invalid_op+0x16/0x40 arch/x86/kernel/traps.c:345
asm_exc_invalid_op+0x16/0x20 arch/x86/include/asm/idtentry.h:568
__local_bh_disable_ip+0x1ec/0x210 kernel/softirq.c:345
__raw_spin_lock_bh include/linux/spinlock_api_smp.h:125 [inline]
_raw_spin_lock_bh+0x18/0x40 kernel/locking/spinlock.c:178
sock_hash_delete_elem+0xac/0x2f0 net/core/sock_map.c:932
bpf_prog_a8aaa52f2e199321+0x42/0x46
bpf_dispatcher_nop_func include/linux/bpf.h:989 [inline]
__bpf_prog_run include/linux/filter.h:603 [inline]
bpf_prog_run include/linux/filter.h:610 [inline]
__bpf_trace_run kernel/trace/bpf_trace.c:2273 [inline]
bpf_trace_run2+0x1fd/0x410 kernel/trace/bpf_trace.c:2312
trace_hrtimer_start include/trace/events/timer.h:202 [inline]
debug_activate kernel/time/hrtimer.c:476 [inline]
enqueue_hrtimer+0x382/0x410 kernel/time/hrtimer.c:1084
__run_hrtimer kernel/time/hrtimer.c:1703 [inline]
__hrtimer_run_queues+0x728/0xe50 kernel/time/hrtimer.c:1750
hrtimer_interrupt+0x392/0x980 kernel/time/hrtimer.c:1812
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1095 [inline]
__sysvec_apic_timer_interrupt+0x156/0x580 arch/x86/kernel/apic/apic.c:1112
sysvec_apic_timer_interrupt+0x8c/0xb0 arch/x86/kernel/apic/apic.c:1106
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:653
native_safe_halt arch/x86/include/asm/irqflags.h:51 [inline]
arch_safe_halt arch/x86/include/asm/irqflags.h:89 [inline]
acpi_safe_halt drivers/acpi/processor_idle.c:112 [inline]
acpi_idle_do_entry+0x10f/0x340 drivers/acpi/processor_idle.c:572
acpi_idle_enter+0x352/0x4f0 drivers/acpi/processor_idle.c:709
cpuidle_enter_state+0x516/0xf80 drivers/cpuidle/cpuidle.c:239
cpuidle_enter+0x59/0x90 drivers/cpuidle/cpuidle.c:356
call_cpuidle kernel/sched/idle.c:155 [inline]
cpuidle_idle_call kernel/sched/idle.c:236 [inline]
do_idle+0x3ce/0x680 kernel/sched/idle.c:303
cpu_startup_entry+0x3d/0x60 kernel/sched/idle.c:401
start_secondary+0xe4/0xf0 arch/x86/kernel/smpboot.c:281
secondary_startup_64_no_verify+0xcf/0xdb

other info that might help us debug this:

Chain exists of:
(console_sem).lock --> &rt_b->rt_runtime_lock --> hrtimer_bases.lock

Possible unsafe locking scenario:

CPU0 CPU1
---- ----
lock(hrtimer_bases.lock);
lock(&rt_b->rt_runtime_lock);
lock(hrtimer_bases.lock);
lock((console_sem).lock);

*** DEADLOCK ***

2 locks held by swapper/1/0:
#0: ffff8880b992a4d8 (hrtimer_bases.lock){-.-.}-{2:2}, at: __run_hrtimer kernel/time/hrtimer.c:1690 [inline]
#0: ffff8880b992a4d8 (hrtimer_bases.lock){-.-.}-{2:2}, at: __hrtimer_run_queues+0x6d3/0xe50 kernel/time/hrtimer.c:1750
#1: ffffffff8d12a980 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:350 [inline]
#1: ffffffff8d12a980 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:791 [inline]
#1: ffffffff8d12a980 (rcu_read_lock){....}-{1:2}, at: __bpf_trace_run kernel/trace/bpf_trace.c:2272 [inline]
#1: ffffffff8d12a980 (rcu_read_lock){....}-{1:2}, at: bpf_trace_run2+0x110/0x410 kernel/trace/bpf_trace.c:2312

stack backtrace:
CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.1.84-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
Call Trace:
<IRQ>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x1e3/0x2cb lib/dump_stack.c:106
check_noncircular+0x2fa/0x3b0 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+0x1661/0x5950 kernel/locking/lockdep.c:3825
__lock_acquire+0x125b/0x1f80 kernel/locking/lockdep.c:5049
lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
down_trylock+0x1c/0xa0 kernel/locking/semaphore.c:139
__down_trylock_console_sem+0x105/0x250 kernel/printk/printk.c:243
console_trylock kernel/printk/printk.c:2650 [inline]
console_trylock_spinning kernel/printk/printk.c:1896 [inline]
vprintk_emit+0x1ee/0x740 kernel/printk/printk.c:2302
_printk+0xd1/0x111 kernel/printk/printk.c:2328
__report_bug lib/bug.c:195 [inline]
report_bug+0x342/0x500 lib/bug.c:219
handle_bug+0x3d/0x70 arch/x86/kernel/traps.c:324
exc_invalid_op+0x16/0x40 arch/x86/kernel/traps.c:345
asm_exc_invalid_op+0x16/0x20 arch/x86/include/asm/idtentry.h:568
RIP: 0010:__local_bh_disable_ip+0x1ec/0x210 kernel/softirq.c:321
Code: 00 00 43 c6 44 2c 0b 00 65 48 8b 04 25 28 00 00 00 48 3b 84 24 80 00 00 00 75 2d 48 8d 65 d8 5b 41 5c 41 5d 41 5e 41 5f 5d c3 <0f> 0b e9 a0 fe ff ff e8 f8 0e 36 09 41 f7 c6 00 02 00 00 0f 85 52
RSP: 0018:ffffc900001e0b00 EFLAGS: 00010006
RAX: 0000000080010003 RBX: ffffffff889819dc RCX: ffff88813fef9dc0
RDX: dffffc0000000000 RSI: 0000000000000201 RDI: ffffffff889819dc
RBP: ffffc900001e0bc8 R08: 0000000000000005 R09: ffffffff88985b7e
R10: 000000000000000c R11: ffff88813fef9dc0 R12: dffffc0000000000
R13: 1ffff9200003c164 R14: ffffc900001e0b60 R15: 0000000000000201
__raw_spin_lock_bh include/linux/spinlock_api_smp.h:125 [inline]
_raw_spin_lock_bh+0x18/0x40 kernel/locking/spinlock.c:178
sock_hash_delete_elem+0xac/0x2f0 net/core/sock_map.c:932
bpf_prog_a8aaa52f2e199321+0x42/0x46
bpf_dispatcher_nop_func include/linux/bpf.h:989 [inline]
__bpf_prog_run include/linux/filter.h:603 [inline]
bpf_prog_run include/linux/filter.h:610 [inline]
__bpf_trace_run kernel/trace/bpf_trace.c:2273 [inline]
bpf_trace_run2+0x1fd/0x410 kernel/trace/bpf_trace.c:2312
trace_hrtimer_start include/trace/events/timer.h:202 [inline]
debug_activate kernel/time/hrtimer.c:476 [inline]
enqueue_hrtimer+0x382/0x410 kernel/time/hrtimer.c:1084
__run_hrtimer kernel/time/hrtimer.c:1703 [inline]
__hrtimer_run_queues+0x728/0xe50 kernel/time/hrtimer.c:1750
hrtimer_interrupt+0x392/0x980 kernel/time/hrtimer.c:1812
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1095 [inline]
__sysvec_apic_timer_interrupt+0x156/0x580 arch/x86/kernel/apic/apic.c:1112
sysvec_apic_timer_interrupt+0x8c/0xb0 arch/x86/kernel/apic/apic.c:1106
</IRQ>
<TASK>
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:653
RIP: 0010:native_save_fl arch/x86/include/asm/irqflags.h:22 [inline]
RIP: 0010:arch_local_save_flags arch/x86/include/asm/irqflags.h:70 [inline]
RIP: 0010:arch_irqs_disabled arch/x86/include/asm/irqflags.h:130 [inline]
RIP: 0010:acpi_safe_halt drivers/acpi/processor_idle.c:113 [inline]
RIP: 0010:acpi_idle_do_entry+0x10f/0x340 drivers/acpi/processor_idle.c:572
Code: 39 f6 f6 48 83 e3 08 0f 85 0b 01 00 00 4c 8d 74 24 20 e8 24 f6 fc f6 0f 1f 44 00 00 e8 8a 35 f6 f6 0f 00 2d 93 f5 b2 00 fb f4 <4c> 89 f3 48 c1 eb 03 42 80 3c 3b 00 74 08 4c 89 f7 e8 7b ac 4d f7
RSP: 0018:ffffc90000177b80 EFLAGS: 000002d3
RAX: ffffffff8a945166 RBX: 0000000000000000 RCX: ffff88813fef9dc0
RDX: 0000000000000000 RSI: ffffffff8aebeec0 RDI: ffffffff8b3d2d20
RBP: ffffc90000177c10 R08: ffffffff8a945148 R09: ffffed1027fdf3b9
R10: 0000000000000000 R11: dffffc0000000001 R12: 1ffff9200002ef70
R13: ffff888141ba8004 R14: ffffc90000177ba0 R15: dffffc0000000000
acpi_idle_enter+0x352/0x4f0 drivers/acpi/processor_idle.c:709
cpuidle_enter_state+0x516/0xf80 drivers/cpuidle/cpuidle.c:239
cpuidle_enter+0x59/0x90 drivers/cpuidle/cpuidle.c:356
call_cpuidle kernel/sched/idle.c:155 [inline]
cpuidle_idle_call kernel/sched/idle.c:236 [inline]
do_idle+0x3ce/0x680 kernel/sched/idle.c:303
cpu_startup_entry+0x3d/0x60 kernel/sched/idle.c:401
start_secondary+0xe4/0xf0 arch/x86/kernel/smpboot.c:281
secondary_startup_64_no_verify+0xcf/0xdb
</TASK>
WARNING: CPU: 1 PID: 0 at kernel/softirq.c:321 __local_bh_disable_ip+0x1ec/0x210 kernel/softirq.c:345
Modules linked in:
CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.1.84-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
RIP: 0010:__local_bh_disable_ip+0x1ec/0x210 kernel/softirq.c:321
Code: 00 00 43 c6 44 2c 0b 00 65 48 8b 04 25 28 00 00 00 48 3b 84 24 80 00 00 00 75 2d 48 8d 65 d8 5b 41 5c 41 5d 41 5e 41 5f 5d c3 <0f> 0b e9 a0 fe ff ff e8 f8 0e 36 09 41 f7 c6 00 02 00 00 0f 85 52
RSP: 0018:ffffc900001e0b00 EFLAGS: 00010006

RAX: 0000000080010003 RBX: ffffffff889819dc RCX: ffff88813fef9dc0
RDX: dffffc0000000000 RSI: 0000000000000201 RDI: ffffffff889819dc
RBP: ffffc900001e0bc8 R08: 0000000000000005 R09: ffffffff88985b7e
R10: 000000000000000c R11: ffff88813fef9dc0 R12: dffffc0000000000
R13: 1ffff9200003c164 R14: ffffc900001e0b60 R15: 0000000000000201
FS: 0000000000000000(0000) GS:ffff8880b9900000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000555556960ca8 CR3: 000000001afb8000 CR4: 00000000003506e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<IRQ>
__raw_spin_lock_bh include/linux/spinlock_api_smp.h:125 [inline]
_raw_spin_lock_bh+0x18/0x40 kernel/locking/spinlock.c:178
sock_hash_delete_elem+0xac/0x2f0 net/core/sock_map.c:932
bpf_prog_a8aaa52f2e199321+0x42/0x46
bpf_dispatcher_nop_func include/linux/bpf.h:989 [inline]
__bpf_prog_run include/linux/filter.h:603 [inline]
bpf_prog_run include/linux/filter.h:610 [inline]
__bpf_trace_run kernel/trace/bpf_trace.c:2273 [inline]
bpf_trace_run2+0x1fd/0x410 kernel/trace/bpf_trace.c:2312
trace_hrtimer_start include/trace/events/timer.h:202 [inline]
debug_activate kernel/time/hrtimer.c:476 [inline]
enqueue_hrtimer+0x382/0x410 kernel/time/hrtimer.c:1084
__run_hrtimer kernel/time/hrtimer.c:1703 [inline]
__hrtimer_run_queues+0x728/0xe50 kernel/time/hrtimer.c:1750
hrtimer_interrupt+0x392/0x980 kernel/time/hrtimer.c:1812
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1095 [inline]
__sysvec_apic_timer_interrupt+0x156/0x580 arch/x86/kernel/apic/apic.c:1112
sysvec_apic_timer_interrupt+0x8c/0xb0 arch/x86/kernel/apic/apic.c:1106
</IRQ>
<TASK>
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:653
RIP: 0010:native_save_fl arch/x86/include/asm/irqflags.h:22 [inline]
RIP: 0010:arch_local_save_flags arch/x86/include/asm/irqflags.h:70 [inline]
RIP: 0010:arch_irqs_disabled arch/x86/include/asm/irqflags.h:130 [inline]
RIP: 0010:acpi_safe_halt drivers/acpi/processor_idle.c:113 [inline]
RIP: 0010:acpi_idle_do_entry+0x10f/0x340 drivers/acpi/processor_idle.c:572
Code: 39 f6 f6 48 83 e3 08 0f 85 0b 01 00 00 4c 8d 74 24 20 e8 24 f6 fc f6 0f 1f 44 00 00 e8 8a 35 f6 f6 0f 00 2d 93 f5 b2 00 fb f4 <4c> 89 f3 48 c1 eb 03 42 80 3c 3b 00 74 08 4c 89 f7 e8 7b ac 4d f7
RSP: 0018:ffffc90000177b80 EFLAGS: 000002d3

RAX: ffffffff8a945166 RBX: 0000000000000000 RCX: ffff88813fef9dc0
RDX: 0000000000000000 RSI: ffffffff8aebeec0 RDI: ffffffff8b3d2d20
RBP: ffffc90000177c10 R08: ffffffff8a945148 R09: ffffed1027fdf3b9
R10: 0000000000000000 R11: dffffc0000000001 R12: 1ffff9200002ef70
R13: ffff888141ba8004 R14: ffffc90000177ba0 R15: dffffc0000000000
acpi_idle_enter+0x352/0x4f0 drivers/acpi/processor_idle.c:709
cpuidle_enter_state+0x516/0xf80 drivers/cpuidle/cpuidle.c:239
cpuidle_enter+0x59/0x90 drivers/cpuidle/cpuidle.c:356
call_cpuidle kernel/sched/idle.c:155 [inline]
cpuidle_idle_call kernel/sched/idle.c:236 [inline]
do_idle+0x3ce/0x680 kernel/sched/idle.c:303
cpu_startup_entry+0x3d/0x60 kernel/sched/idle.c:401
start_secondary+0xe4/0xf0 arch/x86/kernel/smpboot.c:281
secondary_startup_64_no_verify+0xcf/0xdb
</TASK>
----------------
Code disassembly (best guess):
0: 39 f6 cmp %esi,%esi
2: f6 48 83 e3 testb $0xe3,-0x7d(%rax)
6: 08 0f or %cl,(%rdi)
8: 85 0b test %ecx,(%rbx)
a: 01 00 add %eax,(%rax)
c: 00 4c 8d 74 add %cl,0x74(%rbp,%rcx,4)
10: 24 20 and $0x20,%al
12: e8 24 f6 fc f6 call 0xf6fcf63b
17: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
1c: e8 8a 35 f6 f6 call 0xf6f635ab
21: 0f 00 2d 93 f5 b2 00 verw 0xb2f593(%rip) # 0xb2f5bb
28: fb sti
29: f4 hlt
* 2a: 4c 89 f3 mov %r14,%rbx <-- trapping instruction
2d: 48 c1 eb 03 shr $0x3,%rbx
31: 42 80 3c 3b 00 cmpb $0x0,(%rbx,%r15,1)
36: 74 08 je 0x40
38: 4c 89 f7 mov %r14,%rdi
3b: e8 7b ac 4d f7 call 0xf74dacbb


---
If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.
Reply all
Reply to author
Forward
0 new messages