syzbot
BUG: workqueue lockup in wg_ratelimiter_gc_entries
Status:
moderation: reported on 2026/09/15 06:34
Subsystems:
arm
Labels:
prio:high
[Documentation on labels]
Reported-by: syzbot+bccb81be74f2979f2384@syzkaller.appspotmail.com
First crash: 4d02h, last: 4d02h
Sample crash report:
BUG: workqueue lockup - pool cpus=0 node=0 flags=0x0 nice=0 stuck for 39s!
Showing busy workqueues and worker pools:
workqueue events: flags=0x100
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=2 refcnt=3
pending: nsim_dev_hwstats_traffic_work, vmstat_shepherd
workqueue events_unbound: flags=0x2
pwq 8: cpus=0-1 flags=0x4 nice=0 active=1 refcnt=2
in-flight: 4120:nsim_dev_trap_report_work for 0s
workqueue events_power_efficient: flags=0x82
pwq 8: cpus=0-1 flags=0x4 nice=0 active=3 refcnt=4
in-flight: 43:wg_ratelimiter_gc_entries for 39s
pending: 2*neigh_managed_work
workqueue mm_percpu_wq: flags=0x108
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: vmstat_update
workqueue writeback: flags=0x4a
pwq 8: cpus=0-1 flags=0x4 nice=0 active=1 refcnt=2
in-flight: 6453:wb_workfn for 0s
workqueue wg-kex-wg0: flags=0x124
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: wg_packet_handshake_receive_worker
workqueue wg-crypt-wg0: flags=0x128
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=2 refcnt=3
pending: wg_packet_encrypt_worker, wg_packet_tx_worker
workqueue wg-kex-wg1: flags=0x124
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: wg_packet_handshake_receive_worker
workqueue wg-crypt-wg1: flags=0x128
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: wg_packet_decrypt_worker
pwq 6: cpus=1 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: wg_packet_encrypt_worker
workqueue wg-crypt-wg2: flags=0x128
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: wg_packet_encrypt_worker
pwq 6: cpus=1 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: wg_packet_encrypt_worker
workqueue wg-crypt-wg0: flags=0x128
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=2 refcnt=3
pending: wg_packet_encrypt_worker, wg_packet_tx_worker
workqueue wg-crypt-wg1: flags=0x128
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=3 refcnt=4
pending: wg_packet_encrypt_worker, wg_packet_tx_worker, wg_packet_decrypt_worker
pwq 6: cpus=1 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: wg_packet_tx_worker
workqueue wg-crypt-wg2: flags=0x128
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: wg_packet_encrypt_worker
pwq 6: cpus=1 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: wg_packet_encrypt_worker
workqueue krds_cp_wq#0/0: flags=0x20002
pwq 8: cpus=0-1 flags=0x4 nice=0 active=1 refcnt=4
in-flight: 5694:rds_connect_worker for 0s
workqueue wg-crypt-wg0: flags=0x128
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=3 refcnt=4
pending: wg_packet_encrypt_worker, wg_packet_decrypt_worker, wg_packet_tx_worker
pwq 6: cpus=1 node=0 flags=0x0 nice=0 active=1 refcnt=2
in-flight: 7313:wg_packet_tx_worker for 0s
workqueue wg-crypt-wg1: flags=0x128
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=3 refcnt=4
pending: wg_packet_encrypt_worker, wg_packet_tx_worker, wg_packet_decrypt_worker
pwq 6: cpus=1 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: wg_packet_decrypt_worker
workqueue wg-crypt-wg2: flags=0x128
pwq 2: cpus=0 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: wg_packet_encrypt_worker
pwq 6: cpus=1 node=0 flags=0x0 nice=0 active=1 refcnt=2
pending: wg_packet_encrypt_worker
pool 6: cpus=1 node=0 flags=0x0 nice=0 hung=0s workers=5 idle: 5593 8133 6885 3463
pool 8: cpus=0-1 flags=0x4 nice=0 hung=0s workers=9 idle: 1022 7920 7231 7314 12
Showing backtraces of busy workers in stalled worker pools:
pool 2: no worker in running state, cpu=0 is busy (nr_workers=4 nr_idle=4)
The pool might have trouble waking an idle worker.
Backtrace of last woken worker:
task:kworker/0:3 state:R running task stack:0 pid:6510 tgid:6510 ppid:2 task_flags:0x4208060 flags:0x00000010
Workqueue: 0x0 (wg-crypt-wg2)
Call trace:
__switch_to+0x20c/0x520 arch/arm64/kernel/process.c:775 (T)
context_switch kernel/sched/core.c:5520 [inline]
__schedule+0xf98/0x34f4 kernel/sched/core.c:7270
__schedule_loop kernel/sched/core.c:7347 [inline]
schedule+0xcc/0x288 kernel/sched/core.c:7362
worker_thread+0x200/0xc90 kernel/workqueue.c:3566
kthread+0x2ec/0x384 kernel/kthread.c:436
ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:854
NMI backtrace for cpu 0
CPU: 0 UID: 0 PID: 43 Comm: kworker/u8:2 Tainted: G W syzkaller #0 PREEMPT
Tainted: [W]=WARN
Hardware name: linux,dummy-virt (DT)
Workqueue: events_power_efficient wg_ratelimiter_gc_entries
Call trace:
show_stack+0x18/0x24 arch/arm64/kernel/stacktrace.c:499 (C)
__dump_stack lib/dump_stack.c:94 [inline]
dump_stack_lvl+0x7c/0xb0 lib/dump_stack.c:120
dump_stack+0x1c/0x28 lib/dump_stack.c:129
nmi_cpu_backtrace+0x198/0x228 lib/nmi_backtrace.c:123
nmi_trigger_cpumask_backtrace+0x244/0x358 lib/nmi_backtrace.c:66
arch_trigger_cpumask_backtrace+0x18/0x24 arch/arm64/kernel/smp.c:972
cpumask_backtrace+0x10/0x20 lib/nmi_backtrace.c:136
trigger_single_cpu_backtrace include/linux/nmi.h:182 [inline]
show_cpu_pool_busy_workers kernel/workqueue.c:7852 [inline]
show_cpu_pools_busy_workers kernel/workqueue.c:7866 [inline]
wq_watchdog_timer_fn+0xa48/0xb5c kernel/workqueue.c:7982
call_timer_fn+0x1b4/0xa8c kernel/time/timer.c:1748
expire_timers kernel/time/timer.c:1799 [inline]
__run_timers+0x890/0xb04 kernel/time/timer.c:2374
__run_timer_base kernel/time/timer.c:2386 [inline]
__run_timer_base kernel/time/timer.c:2378 [inline]
run_timer_base+0x110/0x180 kernel/time/timer.c:2395
run_timer_softirq+0x24/0x50 kernel/time/timer.c:2406
handle_softirqs+0x2d8/0x1048 kernel/softirq.c:645
__do_softirq+0x14/0x20 kernel/softirq.c:679
____do_softirq+0x10/0x20 arch/arm64/kernel/irq.c:78
call_on_irq_stack+0x30/0x48 arch/arm64/kernel/entry.S:885
do_softirq_own_stack+0x1c/0x40 arch/arm64/kernel/irq.c:83
invoke_softirq kernel/softirq.c:526 [inline]
__irq_exit_rcu+0x470/0x598 kernel/softirq.c:767
irq_exit_rcu+0x14/0x80 kernel/softirq.c:784
__el1_irq arch/arm64/kernel/entry-common.c:531 [inline]
el1_interrupt+0x40/0x60 arch/arm64/kernel/entry-common.c:543
el1h_64_irq_handler+0x18/0x30 arch/arm64/kernel/entry-common.c:548
el1h_64_irq+0x6c/0x70 arch/arm64/kernel/entry.S:586
__daif_local_irq_restore arch/arm64/include/asm/irqflags.h:175 [inline] (P)
arch_local_irq_restore arch/arm64/include/asm/irqflags.h:195 [inline] (P)
lock_release+0x3e0/0x458 kernel/locking/lockdep.c:5910 (P)
__raw_spin_unlock include/linux/spinlock_api_smp.h:199 [inline]
_raw_spin_unlock+0x24/0x84 kernel/locking/spinlock.c:213
spin_unlock include/linux/spinlock.h:401 [inline]
wg_ratelimiter_gc_entries+0x314/0x3e4 drivers/net/wireguard/ratelimiter.c:76
process_one_work+0x830/0x1c00 kernel/workqueue.c:3387
process_scheduled_works kernel/workqueue.c:3470 [inline]
worker_thread+0x42c/0xc90 kernel/workqueue.c:3551
kthread+0x2ec/0x384 kernel/kthread.c:436
ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:854
* Struck through repros no longer work on HEAD.