------------[ cut here ]------------
======================================================
WARNING: possible circular locking dependency detected
5.15.176-syzkaller #0 Not tainted
------------------------------------------------------
swapper/0/0 is trying to acquire lock:
ffffffff8cb14860 (console_owner){-.-.}-{0:0}, at: console_lock_spinning_enable+0x2c/0x60 kernel/printk/printk.c:1802
but task is already holding lock:
ffff8880b8e39b18 (&pool->lock){-.-.}-{2:2}, at: __queue_work+0x56d/0xd00
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #3 (&pool->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
__queue_work+0x56d/0xd00
queue_work_on+0x14b/0x250 kernel/workqueue.c:1559
queue_work include/linux/workqueue.h:512 [inline]
schedule_work include/linux/workqueue.h:573 [inline]
p9_pollwake+0x142/0x160 net/9p/trans_fd.c:542
__wake_up_common+0x2a0/0x4e0 kernel/sched/wait.c:108
__wake_up_common_lock kernel/sched/wait.c:138 [inline]
__wake_up+0x112/0x1c0 kernel/sched/wait.c:157
tty_write_unlock drivers/tty/tty_io.c:956 [inline]
do_tty_write drivers/tty/tty_io.c:1063 [inline]
file_tty_write+0x80f/0x920 drivers/tty/tty_io.c:1110
call_write_iter include/linux/fs.h:2174 [inline]
new_sync_write fs/read_write.c:507 [inline]
vfs_write+0xacd/0xe50 fs/read_write.c:594
ksys_write+0x1a2/0x2c0 fs/read_write.c:647
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3b/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x66/0xd0
-> #2 (&tty->write_wait){-...}-{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
__wake_up_common_lock kernel/sched/wait.c:137 [inline]
__wake_up+0xf5/0x1c0 kernel/sched/wait.c:157
tty_port_default_wakeup+0xa8/0x100 drivers/tty/tty_port.c:51
serial8250_tx_chars+0x60d/0x800 drivers/tty/serial/8250/8250_port.c:1828
serial8250_handle_irq+0x505/0x600 drivers/tty/serial/8250/8250_port.c:1924
serial8250_default_handle_irq+0xc8/0x1e0 drivers/tty/serial/8250/8250_port.c:1941
serial8250_interrupt+0xa1/0x1e0 drivers/tty/serial/8250/8250_core.c:127
__handle_irq_event_percpu+0x292/0xa70 kernel/irq/handle.c:156
handle_irq_event_percpu kernel/irq/handle.c:196 [inline]
handle_irq_event+0xff/0x2b0 kernel/irq/handle.c:213
handle_edge_irq+0x245/0xbf0 kernel/irq/chip.c:819
generic_handle_irq_desc include/linux/irqdesc.h:158 [inline]
handle_irq arch/x86/kernel/irq.c:231 [inline]
__common_interrupt+0xd7/0x1f0 arch/x86/kernel/irq.c:250
common_interrupt+0xae/0xd0 arch/x86/kernel/irq.c:240
asm_common_interrupt+0x22/0x40 arch/x86/include/asm/idtentry.h:667
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:108 [inline]
acpi_idle_do_entry+0x10f/0x340 drivers/acpi/processor_idle.c:562
acpi_idle_enter+0x352/0x4f0 drivers/acpi/processor_idle.c:697
cpuidle_enter_state+0x521/0xef0 drivers/cpuidle/cpuidle.c:237
cpuidle_enter+0x59/0x90 drivers/cpuidle/cpuidle.c:351
call_cpuidle kernel/sched/idle.c:158 [inline]
cpuidle_idle_call kernel/sched/idle.c:239 [inline]
do_idle+0x3e4/0x670 kernel/sched/idle.c:306
cpu_startup_entry+0x14/0x20 kernel/sched/idle.c:403
start_kernel+0x48c/0x540 init/main.c:1140
secondary_startup_64_no_verify+0xb1/0xbb
-> #1 (&port_lock_key){-.-.}-{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
serial8250_console_write+0x19d/0x1180 drivers/tty/serial/8250/8250_port.c:3354
console_unlock+0xced/0x12b0 kernel/printk/printk.c:2744
vprintk_emit+0xbf/0x150 kernel/printk/printk.c:2274
_printk+0xd1/0x120 kernel/printk/printk.c:2299
register_console+0x65a/0x940 kernel/printk/printk.c:3107
univ8250_console_init+0x41/0x50 drivers/tty/serial/8250/8250_core.c:690
console_init+0x18c/0x660 kernel/printk/printk.c:3207
start_kernel+0x301/0x540 init/main.c:1076
secondary_startup_64_no_verify+0xb1/0xbb
-> #0 (console_owner){-.-.}-{0:0}:
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
console_lock_spinning_enable+0x51/0x60 kernel/printk/printk.c:1805
console_unlock+0xa47/0x12b0 kernel/printk/printk.c:2741
vprintk_emit+0xbf/0x150 kernel/printk/printk.c:2274
_printk+0xd1/0x120 kernel/printk/printk.c:2299
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:604
copy_from_user_nofault+0x15c/0x1c0
bpf_probe_read_user_common kernel/trace/bpf_trace.c:157 [inline]
____bpf_probe_read_user kernel/trace/bpf_trace.c:166 [inline]
bpf_probe_read_user+0x26/0x70 kernel/trace/bpf_trace.c:163
bpf_prog_a7c3bb8cfcee081b+0x45/0xa3c
bpf_dispatcher_nop_func include/linux/bpf.h:790 [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:1878 [inline]
bpf_trace_run1+0x168/0x2f0 kernel/trace/bpf_trace.c:1914
__traceiter_workqueue_activate_work+0x64/0xb0 include/trace/events/workqueue.h:59
trace_workqueue_activate_work+0x150/0x1b0 include/trace/events/workqueue.h:59
__queue_work+0x89e/0xd00 kernel/workqueue.c:1521
call_timer_fn+0x16d/0x560 kernel/time/timer.c:1451
expire_timers kernel/time/timer.c:1491 [inline]
__run_timers+0x6a8/0x890 kernel/time/timer.c:1767
run_timer_softirq+0x63/0xf0 kernel/time/timer.c:1780
handle_softirqs+0x3a7/0x930 kernel/softirq.c:558
__do_softirq kernel/softirq.c:592 [inline]
invoke_softirq kernel/softirq.c:432 [inline]
__irq_exit_rcu+0x157/0x240 kernel/softirq.c:641
irq_exit_rcu+0x5/0x20 kernel/softirq.c:653
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
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:676
sched_core_balance+0x125/0xc90 kernel/sched/core.c:6054
do_balance_callbacks kernel/sched/core.c:4670 [inline]
__balance_callbacks+0x180/0x270 kernel/sched/core.c:4724
finish_lock_switch+0x80/0x100 kernel/sched/core.c:4780
finish_task_switch+0x134/0x630 kernel/sched/core.c:4899
context_switch kernel/sched/core.c:5030 [inline]
__schedule+0x12cc/0x45b0 kernel/sched/core.c:6373
schedule_idle+0x4a/0x90 kernel/sched/core.c:6484
do_idle+0x61e/0x670 kernel/sched/idle.c:334
cpu_startup_entry+0x14/0x20 kernel/sched/idle.c:403
start_kernel+0x48c/0x540 init/main.c:1140
secondary_startup_64_no_verify+0xb1/0xbb
other info that might help us debug this:
Chain exists of:
console_owner --> &tty->write_wait --> &pool->lock
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&pool->lock);
lock(&tty->write_wait);
lock(&pool->lock);
lock(console_owner);
*** DEADLOCK ***
6 locks held by swapper/0/0:
#0: ffffffff8cb1fce0 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x0/0x30
#1: ffffc90000007be0 (&(&nsim_dev->trap_data->trap_report_dw)->timer){..-.}-{0:0}, at: lockdep_copy_map include/linux/lockdep.h:45 [inline]
#1: ffffc90000007be0 (&(&nsim_dev->trap_data->trap_report_dw)->timer){..-.}-{0:0}, at: call_timer_fn+0xbe/0x560 kernel/time/timer.c:1441
#2: ffffffff8cb1fce0 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x5/0x30 include/linux/rcupdate.h:311
#3: ffff8880b8e39b18 (&pool->lock){-.-.}-{2:2}, at: __queue_work+0x56d/0xd00
#4: ffffffff8cb1fce0 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x5/0x30 include/linux/rcupdate.h:311
#5: ffffffff8c9fc5a0 (console_lock){+.+.}-{0:0}, at: vprintk_emit+0xa6/0x150 kernel/printk/printk.c:2273
stack backtrace:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.15.176-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 12/27/2024
Call Trace:
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x1e3/0x2d0 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
console_lock_spinning_enable+0x51/0x60 kernel/printk/printk.c:1805
console_unlock+0xa47/0x12b0 kernel/printk/printk.c:2741
vprintk_emit+0xbf/0x150 kernel/printk/printk.c:2274
_printk+0xd1/0x120 kernel/printk/printk.c:2299
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:604
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 cb ba d5 ff 48 c7 c0 f2 ff ff ff 5b 41 5c 41 5d 41 5e 41 5f 5d c3 e8 b4 ba 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:ffffc90000007988 EFLAGS: 00010046
RAX: ffffffff81aaca2c RBX: 0000000000000000 RCX: ffffffff8c8bd680
RDX: 0000000000000100 RSI: 0000000000000000 RDI: 0000000000000000
RBP: dffffc0000000000 R08: ffffffff81aac93d R09: fffffbfff2131421
R10: 0000000000000000 R11: dffffc0000000001 R12: 0000000020000000
R13: 0000000000000008 R14: 0000000020000000 R15: ffffc900000079e8
bpf_probe_read_user_common kernel/trace/bpf_trace.c:157 [inline]
____bpf_probe_read_user kernel/trace/bpf_trace.c:166 [inline]
bpf_probe_read_user+0x26/0x70 kernel/trace/bpf_trace.c:163
bpf_prog_a7c3bb8cfcee081b+0x45/0xa3c
bpf_dispatcher_nop_func include/linux/bpf.h:790 [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:1878 [inline]
bpf_trace_run1+0x168/0x2f0 kernel/trace/bpf_trace.c:1914
__traceiter_workqueue_activate_work+0x64/0xb0 include/trace/events/workqueue.h:59
trace_workqueue_activate_work+0x150/0x1b0 include/trace/events/workqueue.h:59
__queue_work+0x89e/0xd00 kernel/workqueue.c:1521
call_timer_fn+0x16d/0x560 kernel/time/timer.c:1451
expire_timers kernel/time/timer.c:1491 [inline]
__run_timers+0x6a8/0x890 kernel/time/timer.c:1767
run_timer_softirq+0x63/0xf0 kernel/time/timer.c:1780
handle_softirqs+0x3a7/0x930 kernel/softirq.c:558
__do_softirq kernel/softirq.c:592 [inline]
invoke_softirq kernel/softirq.c:432 [inline]
__irq_exit_rcu+0x157/0x240 kernel/softirq.c:641
irq_exit_rcu+0x5/0x20 kernel/softirq.c:653
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
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:676
RIP: 0010:sched_core_balance+0x125/0xc90 kernel/sched/core.c:6054
Code: 00 48 c7 c2 20 cf aa 8a e8 38 b1 0a 00 48 89 5c 24 48 e9 ed 0a 00 00 48 8b 7c 24 40 e8 24 41 f0 08 e8 af 87 2e 00 fb 83 fb 08 <0f> 83 c0 0a 00 00 48 8b 44 24 58 4c 8d 3c c5 10 b8 5c 8c 4c 89 f8
RSP: 0018:ffffffff8c807980 EFLAGS: 00000293
RAX: 322c20dcb0b3c800 RBX: 0000000000000000 RCX: ffffffff96a90f03
RDX: dffffc0000000000 RSI: ffffffff8aab2b80 RDI: ffffffff8af9f340
RBP: ffffffff8c807ae8 R08: ffffffff81870370 R09: ffffed10171c7461
R10: 0000000000000000 R11: dffffc0000000001 R12: ffff8880b8e27700
R13: dffffc0000000000 R14: ffff8880b8e3a300 R15: ffffffff81587a70
do_balance_callbacks kernel/sched/core.c:4670 [inline]
__balance_callbacks+0x180/0x270 kernel/sched/core.c:4724
finish_lock_switch+0x80/0x100 kernel/sched/core.c:4780
finish_task_switch+0x134/0x630 kernel/sched/core.c:4899
context_switch kernel/sched/core.c:5030 [inline]
__schedule+0x12cc/0x45b0 kernel/sched/core.c:6373
schedule_idle+0x4a/0x90 kernel/sched/core.c:6484
do_idle+0x61e/0x670 kernel/sched/idle.c:334
cpu_startup_entry+0x14/0x20 kernel/sched/idle.c:403
start_kernel+0x48c/0x540 init/main.c:1140
secondary_startup_64_no_verify+0xb1/0xbb
WARNING: CPU: 0 PID: 0 at mm/maccess.c:226 copy_from_user_nofault+0x15c/0x1c0
Modules linked in:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.15.176-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 12/27/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 cb ba d5 ff 48 c7 c0 f2 ff ff ff 5b 41 5c 41 5d 41 5e 41 5f 5d c3 e8 b4 ba 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:ffffc90000007988 EFLAGS: 00010046
RAX: ffffffff81aaca2c RBX: 0000000000000000 RCX: ffffffff8c8bd680
RDX: 0000000000000100 RSI: 0000000000000000 RDI: 0000000000000000
RBP: dffffc0000000000 R08: ffffffff81aac93d R09: fffffbfff2131421
R10: 0000000000000000 R11: dffffc0000000001 R12: 0000000020000000
R13: 0000000000000008 R14: 0000000020000000 R15: ffffc900000079e8
FS: 0000000000000000(0000) GS:ffff8880b8e00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000205ee000 CR3: 000000005e314000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
bpf_probe_read_user_common kernel/trace/bpf_trace.c:157 [inline]
____bpf_probe_read_user kernel/trace/bpf_trace.c:166 [inline]
bpf_probe_read_user+0x26/0x70 kernel/trace/bpf_trace.c:163
bpf_prog_a7c3bb8cfcee081b+0x45/0xa3c
bpf_dispatcher_nop_func include/linux/bpf.h:790 [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:1878 [inline]
bpf_trace_run1+0x168/0x2f0 kernel/trace/bpf_trace.c:1914
__traceiter_workqueue_activate_work+0x64/0xb0 include/trace/events/workqueue.h:59
trace_workqueue_activate_work+0x150/0x1b0 include/trace/events/workqueue.h:59
__queue_work+0x89e/0xd00 kernel/workqueue.c:1521
call_timer_fn+0x16d/0x560 kernel/time/timer.c:1451
expire_timers kernel/time/timer.c:1491 [inline]
__run_timers+0x6a8/0x890 kernel/time/timer.c:1767
run_timer_softirq+0x63/0xf0 kernel/time/timer.c:1780
handle_softirqs+0x3a7/0x930 kernel/softirq.c:558
__do_softirq kernel/softirq.c:592 [inline]
invoke_softirq kernel/softirq.c:432 [inline]
__irq_exit_rcu+0x157/0x240 kernel/softirq.c:641
irq_exit_rcu+0x5/0x20 kernel/softirq.c:653
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
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:676
RIP: 0010:sched_core_balance+0x125/0xc90 kernel/sched/core.c:6054
Code: 00 48 c7 c2 20 cf aa 8a e8 38 b1 0a 00 48 89 5c 24 48 e9 ed 0a 00 00 48 8b 7c 24 40 e8 24 41 f0 08 e8 af 87 2e 00 fb 83 fb 08 <0f> 83 c0 0a 00 00 48 8b 44 24 58 4c 8d 3c c5 10 b8 5c 8c 4c 89 f8
RSP: 0018:ffffffff8c807980 EFLAGS: 00000293
RAX: 322c20dcb0b3c800 RBX: 0000000000000000 RCX: ffffffff96a90f03
RDX: dffffc0000000000 RSI: ffffffff8aab2b80 RDI: ffffffff8af9f340
RBP: ffffffff8c807ae8 R08: ffffffff81870370 R09: ffffed10171c7461
R10: 0000000000000000 R11: dffffc0000000001 R12: ffff8880b8e27700
R13: dffffc0000000000 R14: ffff8880b8e3a300 R15: ffffffff81587a70
do_balance_callbacks kernel/sched/core.c:4670 [inline]
__balance_callbacks+0x180/0x270 kernel/sched/core.c:4724
finish_lock_switch+0x80/0x100 kernel/sched/core.c:4780
finish_task_switch+0x134/0x630 kernel/sched/core.c:4899
context_switch kernel/sched/core.c:5030 [inline]
__schedule+0x12cc/0x45b0 kernel/sched/core.c:6373
schedule_idle+0x4a/0x90 kernel/sched/core.c:6484
do_idle+0x61e/0x670 kernel/sched/idle.c:334
cpu_startup_entry+0x14/0x20 kernel/sched/idle.c:403
start_kernel+0x48c/0x540 init/main.c:1140
secondary_startup_64_no_verify+0xb1/0xbb
----------------
Code disassembly (best guess):
0: 00 48 c7 add %cl,-0x39(%rax)
3: c2 20 cf ret $0xcf20
6: aa stos %al,%es:(%rdi)
7: 8a e8 mov %al,%ch
9: 38 b1 0a 00 48 89 cmp %dh,-0x76b7fff6(%rcx)
f: 5c pop %rsp
10: 24 48 and $0x48,%al
12: e9 ed 0a 00 00 jmp 0xb04
17: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi
1c: e8 24 41 f0 08 call 0x8f04145
21: e8 af 87 2e 00 call 0x2e87d5
26: fb sti
27: 83 fb 08 cmp $0x8,%ebx
* 2a: 0f 83 c0 0a 00 00 jae 0xaf0 <-- trapping instruction
30: 48 8b 44 24 58 mov 0x58(%rsp),%rax
35: 4c 8d 3c c5 10 b8 5c lea -0x73a347f0(,%rax,8),%r15
3c: 8c
3d: 4c 89 f8 mov %r15,%rax