============================================
WARNING: possible recursive locking detected
5.15.174-syzkaller #0 Not tainted
--------------------------------------------
kworker/0:11/4248 is trying to acquire lock:
ffff8880778ba218 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: spin_lock include/linux/spinlock.h:363 [inline]
ffff8880778ba218 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: __dev_xmit_skb net/core/dev.c:3877 [inline]
ffff8880778ba218 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: __dev_queue_xmit+0x2158/0x32b0 net/core/dev.c:4221
but task is already holding lock:
ffff88807c8c3258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: spin_trylock include/linux/spinlock.h:373 [inline]
ffff88807c8c3258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: qdisc_run_begin include/net/sch_generic.h:173 [inline]
ffff88807c8c3258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: __dev_xmit_skb net/core/dev.c:3839 [inline]
ffff88807c8c3258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: __dev_queue_xmit+0x1178/0x32b0 net/core/dev.c:4221
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock(dev->qdisc_tx_busylock ?: &qdisc_tx_busylock);
lock(dev->qdisc_tx_busylock ?: &qdisc_tx_busylock);
*** DEADLOCK ***
May be due to missing lock nesting notation
15 locks held by kworker/0:11/4248:
#0: ffff888062fe3d38 ((wq_completion)wg-kex-wg2#8){+.+.}-{0:0}, at: process_one_work+0x78a/0x10c0 kernel/workqueue.c:2283
#1: ffffc900030cfd20 ((work_completion)(&({ do { const void *__vpp_verify = (typeof((worker) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = (unsigned long) ((typeof(*((worker))) *)((worker))); (typeof((typeof(*((worker))) *)((worker)))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); })->work)){+.+.}-{0:0}, at: process_one_work+0x7d0/0x10c0 kernel/workqueue.c:2285
#2: ffffc90000007ca0 ((&d->timer)){+.-.}-{0:0}, at: lockdep_copy_map include/linux/lockdep.h:45 [inline]
#2: ffffc90000007ca0 ((&d->timer)){+.-.}-{0:0}, at: call_timer_fn+0xbe/0x560 kernel/time/timer.c:1441
#3: ffffffff8cb1fd20 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x5/0x30 include/linux/rcupdate.h:311
#4: ffffffff8cb1fd80 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:312
#5: ffffffff8cb1fd80 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:312
#6: ffffffff8cb1fd20 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x5/0x30 include/linux/rcupdate.h:311
#7: ffffffff8cb1fd80 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:312
#8: ffffffff8cb1fd80 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:312
#9: ffff88807c8c3258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: spin_trylock include/linux/spinlock.h:373 [inline]
#9: ffff88807c8c3258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: qdisc_run_begin include/net/sch_generic.h:173 [inline]
#9: ffff88807c8c3258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: __dev_xmit_skb net/core/dev.c:3839 [inline]
#9: ffff88807c8c3258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: __dev_queue_xmit+0x1178/0x32b0 net/core/dev.c:4221
#10: ffff8880646ab360 (k-slock-AF_INET6){+.-.}-{2:2}, at: spin_trylock include/linux/spinlock.h:373 [inline]
#10: ffff8880646ab360 (k-slock-AF_INET6){+.-.}-{2:2}, at: icmpv6_xmit_lock net/ipv6/icmp.c:118 [inline]
#10: ffff8880646ab360 (k-slock-AF_INET6){+.-.}-{2:2}, at: icmp6_send+0xcb5/0x21e0 net/ipv6/icmp.c:551
#11: ffffffff8cb1fd20 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x5/0x30 include/linux/rcupdate.h:311
#12: ffffffff8cb1fd20 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:312
#13: ffffffff8cb1fd80 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:312
#14: ffffffff8cb1fd80 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:312
stack backtrace:
CPU: 0 PID: 4248 Comm: kworker/0:11 Not tainted 5.15.174-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/25/2024
Workqueue: wg-kex-wg2 wg_packet_handshake_receive_worker
Call Trace:
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x1e3/0x2d0 lib/dump_stack.c:106
print_deadlock_bug kernel/locking/lockdep.c:2946 [inline]
check_deadlock kernel/locking/lockdep.c:2989 [inline]
validate_chain+0x46d2/0x5930 kernel/locking/lockdep.c:3775
__lock_acquire+0x1295/0x1ff0 kernel/locking/lockdep.c:5012
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
spin_lock include/linux/spinlock.h:363 [inline]
__dev_xmit_skb net/core/dev.c:3877 [inline]
__dev_queue_xmit+0x2158/0x32b0 net/core/dev.c:4221
neigh_hh_output include/net/neighbour.h:493 [inline]
neigh_output include/net/neighbour.h:507 [inline]
ip6_finish_output2+0xead/0x15a0 net/ipv6/ip6_output.c:130
ip6_send_skb+0x1aa/0x390 net/ipv6/ip6_output.c:1951
icmp6_send+0x1732/0x21e0 net/ipv6/icmp.c:630
__icmpv6_send include/linux/icmpv6.h:28 [inline]
icmpv6_send include/linux/icmpv6.h:49 [inline]
ip6_link_failure+0x37/0x4a0 net/ipv6/route.c:2788
ip_tunnel_xmit+0x187b/0x25c0 net/ipv4/ip_tunnel.c:844
__gre_xmit net/ipv4/ip_gre.c:474 [inline]
gre_tap_xmit+0x4f8/0x6e0 net/ipv4/ip_gre.c:751
__netdev_start_xmit include/linux/netdevice.h:5019 [inline]
netdev_start_xmit include/linux/netdevice.h:5033 [inline]
xmit_one net/core/dev.c:3617 [inline]
dev_hard_start_xmit+0x298/0x7a0 net/core/dev.c:3633
sch_direct_xmit+0x2b2/0x5e0 net/sched/sch_generic.c:342
__dev_xmit_skb net/core/dev.c:3852 [inline]
__dev_queue_xmit+0x1861/0x32b0 net/core/dev.c:4221
neigh_hh_output include/net/neighbour.h:493 [inline]
neigh_output include/net/neighbour.h:507 [inline]
ip6_finish_output2+0xead/0x15a0 net/ipv6/ip6_output.c:130
ip6tunnel_xmit include/net/ip6_tunnel.h:160 [inline]
udp_tunnel6_xmit_skb+0x538/0x970 net/ipv6/ip6_udp_tunnel.c:109
geneve6_xmit_skb drivers/net/geneve.c:1087 [inline]
geneve_xmit+0x25ff/0x3480 drivers/net/geneve.c:1116
__netdev_start_xmit include/linux/netdevice.h:5019 [inline]
netdev_start_xmit include/linux/netdevice.h:5033 [inline]
xmit_one net/core/dev.c:3617 [inline]
dev_hard_start_xmit+0x298/0x7a0 net/core/dev.c:3633
__dev_queue_xmit+0x1c8e/0x32b0 net/core/dev.c:4256
neigh_hh_output include/net/neighbour.h:493 [inline]
neigh_output include/net/neighbour.h:507 [inline]
ip_finish_output2+0xcd7/0x11a0 net/ipv4/ip_output.c:228
iptunnel_xmit+0x513/0x950 net/ipv4/ip_tunnel_core.c:82
udp_tunnel_xmit_skb+0x1d0/0x2d0 net/ipv4/udp_tunnel_core.c:175
tipc_udp_xmit+0x576/0x9d0 net/tipc/udp_media.c:198
tipc_bearer_xmit_skb+0x2ca/0x420 net/tipc/bearer.c:577
tipc_disc_timeout+0x5ea/0x760 net/tipc/discover.c:338
call_timer_fn+0x16d/0x560 kernel/time/timer.c:1451
expire_timers kernel/time/timer.c:1496 [inline]
__run_timers+0x67c/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+0x162/0x240 kernel/softirq.c:459
__local_bh_enable_ip+0x1b1/0x1f0 kernel/softirq.c:383
rcu_read_unlock_bh include/linux/rcupdate.h:809 [inline]
wg_packet_create_data drivers/net/wireguard/send.c:325 [inline]
wg_packet_send_staged_packets+0x1170/0x1840 drivers/net/wireguard/send.c:388
wg_receive_handshake_packet drivers/net/wireguard/receive.c:193 [inline]
wg_packet_handshake_receive_worker+0x686/0xe00 drivers/net/wireguard/receive.c:220
process_one_work+0x8a1/0x10c0 kernel/workqueue.c:2310
worker_thread+0xaca/0x1280 kernel/workqueue.c:2457
kthread+0x3f6/0x4f0 kernel/kthread.c:334
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:287