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