============================================ WARNING: possible recursive locking detected syzkaller #0 Not tainted -------------------------------------------- kworker/0:5/4233 is trying to acquire lock: ffff88807cef3218 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: spin_lock include/linux/spinlock.h:364 [inline] ffff88807cef3218 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: __dev_xmit_skb net/core/dev.c:3922 [inline] ffff88807cef3218 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: __dev_queue_xmit+0x1fd1/0x2f80 net/core/dev.c:4266 but task is already holding lock: ffff88801efa1258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: spin_trylock include/linux/spinlock.h:374 [inline] ffff88801efa1258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: qdisc_run_begin include/net/sch_generic.h:173 [inline] ffff88801efa1258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: __dev_xmit_skb net/core/dev.c:3884 [inline] ffff88801efa1258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: __dev_queue_xmit+0x1120/0x2f80 net/core/dev.c:4266 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:5/4233: #0: ffff888016c70938 ((wq_completion)events){+.+.}-{0:0}, at: process_one_work+0x761/0x1010 kernel/workqueue.c:-1 #1: ffffc900031afd00 ((work_completion)(&pwq->unbound_release_work)){+.+.}-{0:0}, at: process_one_work+0x79f/0x1010 kernel/workqueue.c:2285 #2: ffffc90000007be0 ((&ndev->rs_timer)){+.-.}-{0:0}, at: lockdep_copy_map include/linux/lockdep.h:45 [inline] #2: ffffc90000007be0 ((&ndev->rs_timer)){+.-.}-{0:0}, at: call_timer_fn+0xca/0x540 kernel/time/timer.c:1638 #3: ffffffff8c31f360 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x5/0x30 include/linux/rcupdate.h:312 #4: ffffffff8c31f3c0 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:313 #5: ffffffff8c31f3c0 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:313 #6: ffff88801efa1258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: spin_trylock include/linux/spinlock.h:374 [inline] #6: ffff88801efa1258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: qdisc_run_begin include/net/sch_generic.h:173 [inline] #6: ffff88801efa1258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: __dev_xmit_skb net/core/dev.c:3884 [inline] #6: ffff88801efa1258 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+.-.}-{2:2}, at: __dev_queue_xmit+0x1120/0x2f80 net/core/dev.c:4266 #7: ffffffff8c31f3c0 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:313 #8: ffffffff8c31f3c0 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:313 #9: ffff88807cef3148 (dev->qdisc_running_key ?: &qdisc_running_key){+...}-{0:0}, at: neigh_output include/net/neighbour.h:509 [inline] #9: ffff88807cef3148 (dev->qdisc_running_key ?: &qdisc_running_key){+...}-{0:0}, at: ip6_finish_output2+0x108c/0x1510 net/ipv6/ip6_output.c:130 #10: ffff88802b5a57a0 (k-slock-AF_INET6){+.-.}-{2:2}, at: spin_trylock include/linux/spinlock.h:374 [inline] #10: ffff88802b5a57a0 (k-slock-AF_INET6){+.-.}-{2:2}, at: icmpv6_xmit_lock net/ipv6/icmp.c:118 [inline] #10: ffff88802b5a57a0 (k-slock-AF_INET6){+.-.}-{2:2}, at: icmp6_send+0xbe3/0x1990 net/ipv6/icmp.c:551 #11: ffffffff8c31f360 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x5/0x30 include/linux/rcupdate.h:312 #12: ffffffff8c31f360 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:313 #13: ffffffff8c31f3c0 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:313 #14: ffffffff8c31f3c0 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire+0x9/0x30 include/linux/rcupdate.h:313 stack backtrace: CPU: 0 PID: 4233 Comm: kworker/0:5 Not tainted syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/18/2026 Workqueue: events pwq_unbound_release_workfn Call Trace: dump_stack_lvl+0x188/0x250 lib/dump_stack.c:106 __lock_acquire+0x1236/0x7d10 kernel/locking/lockdep.c:-1 lock_acquire+0x19e/0x400 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:364 [inline] __dev_xmit_skb net/core/dev.c:3922 [inline] __dev_queue_xmit+0x1fd1/0x2f80 net/core/dev.c:4266 neigh_output include/net/neighbour.h:509 [inline] ip6_finish_output2+0x108c/0x1510 net/ipv6/ip6_output.c:130 ip6_send_skb+0x1b9/0x360 net/ipv6/ip6_output.c:1884 icmp6_send+0x133e/0x1990 net/ipv6/icmp.c:630 __icmpv6_send include/linux/icmpv6.h:28 [inline] icmpv6_send include/linux/icmpv6.h:49 [inline] ip6_link_failure+0x35/0x490 net/ipv6/route.c:2789 dst_link_failure include/net/dst.h:422 [inline] ipip6_tunnel_xmit net/ipv6/sit.c:1045 [inline] sit_tunnel_xmit+0xad0/0x2350 net/ipv6/sit.c:1082 __netdev_start_xmit include/linux/netdevice.h:5036 [inline] netdev_start_xmit include/linux/netdevice.h:5050 [inline] xmit_one net/core/dev.c:3662 [inline] dev_hard_start_xmit+0x2a5/0x7e0 net/core/dev.c:3678 sch_direct_xmit+0x25a/0x4b0 net/sched/sch_generic.c:345 qdisc_restart net/sched/sch_generic.c:410 [inline] __qdisc_run+0xa7e/0x1490 net/sched/sch_generic.c:418 __dev_xmit_skb net/core/dev.c:3955 [inline] __dev_queue_xmit+0xe3d/0x2f80 net/core/dev.c:4266 neigh_output include/net/neighbour.h:509 [inline] ip6_finish_output2+0x108c/0x1510 net/ipv6/ip6_output.c:130 ip6tunnel_xmit+0x1a6/0x3d0 include/net/ip6_tunnel.h:160 ip6_tnl_xmit+0x1d06/0x23e0 net/ipv6/ip6_tunnel.c:1275 __gre6_xmit+0x960/0xc70 net/ipv6/ip6_gre.c:787 ip6gre_xmit_ipv6 net/ipv6/ip6_gre.c:843 [inline] ip6gre_tunnel_xmit+0xcc0/0x1070 net/ipv6/ip6_gre.c:915 __netdev_start_xmit include/linux/netdevice.h:5036 [inline] netdev_start_xmit include/linux/netdevice.h:5050 [inline] xmit_one net/core/dev.c:3662 [inline] dev_hard_start_xmit+0x2a5/0x7e0 net/core/dev.c:3678 sch_direct_xmit+0x25a/0x4b0 net/sched/sch_generic.c:345 __dev_xmit_skb net/core/dev.c:3897 [inline] __dev_queue_xmit+0x179f/0x2f80 net/core/dev.c:4266 neigh_hh_output include/net/neighbour.h:493 [inline] neigh_output include/net/neighbour.h:507 [inline] ip6_finish_output2+0x1051/0x1510 net/ipv6/ip6_output.c:130 dst_output include/net/dst.h:452 [inline] NF_HOOK include/linux/netfilter.h:302 [inline] ndisc_send_skb+0xc2a/0x1500 net/ipv6/ndisc.c:513 addrconf_rs_timer+0x2d1/0x630 net/ipv6/addrconf.c:3956 call_timer_fn+0x17b/0x540 kernel/time/timer.c:1648 expire_timers kernel/time/timer.c:1699 [inline] __run_timers+0x53e/0x800 kernel/time/timer.c:1970 run_timer_softirq+0x63/0xf0 kernel/time/timer.c:1983 handle_softirqs+0x339/0x830 kernel/softirq.c:576 __do_softirq kernel/softirq.c:610 [inline] invoke_softirq kernel/softirq.c:450 [inline] __irq_exit_rcu+0x13b/0x230 kernel/softirq.c:659 irq_exit_rcu+0x5/0x20 kernel/softirq.c:671 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:preempt_schedule_irq+0xb6/0x160 kernel/sched/core.c:6799 Code: 00 00 43 c6 44 37 04 f8 74 0b 0f 0b 48 f7 03 08 00 00 00 74 7f bf 01 00 00 00 e8 a5 c1 8c f7 e8 e0 b1 b9 f7 fb bf 01 00 00 00 65 b5 ff ff 43 c6 44 37 08 00 48 c7 44 24 40 00 00 00 00 9c 8f RSP: 0018:ffffc900031af9c0 EFLAGS: 00000282 RAX: 307897079e324800 RBX: 0000000000000000 RCX: 307897079e324800 RDX: dffffc0000000000 RSI: ffffffff8a2b3180 RDI: 0000000000000001 RBP: ffffc900031afa60 R08: ffffffff901d80ef R09: 1ffffffff203b01d R10: dffffc0000000000 R11: fffffbfff203b01e R12: 0000000000000000 R13: 0000000000000000 R14: dffffc0000000000 R15: 1ffff92000635f38 irqentry_exit+0x63/0x70 kernel/entry/common.c:432 asm_sysvec_reschedule_ipi+0x16/0x20 arch/x86/include/asm/idtentry.h:681 RIP: 0010:lockdep_unregister_key+0x4d3/0x520 kernel/locking/lockdep.c:6334 Code: 48 3b 84 24 80 00 00 00 75 39 48 8d 65 d8 5b 41 5c 41 5d 41 5e 41 5f 5d c3 e8 e9 ac 5f 08 41 f7 c4 00 02 00 00 74 90 fb 84 db <75> 8f eb a0 0f 0b e9 44 ff ff ff 0f 0b e9 b0 fe ff ff 0f 0b e9 fd RSP: 0018:ffffc900031afb20 EFLAGS: 00000246 RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 307897079e324800 RDX: 0000000000000001 RSI: ffffffff8a2b3f80 RDI: ffffffff8a7a09c0 RBP: ffffc900031afbf0 R08: ffffffff901a9e2f R09: 1ffffffff20353c5 R10: dffffc0000000000 R11: fffffbfff20353c6 R12: 0000000000000a02 R13: ffff88807432f929 R14: ffffffff901a8028 R15: 1ffff92000635f68 wq_unregister_lockdep kernel/workqueue.c:3518 [inline] pwq_unbound_release_workfn+0x262/0x2b0 kernel/workqueue.c:3756 process_one_work+0x85f/0x1010 kernel/workqueue.c:2310 worker_thread+0xaa6/0x1290 kernel/workqueue.c:2457 kthread+0x436/0x520 kernel/kthread.c:334 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:287 ---------------- Code disassembly (best guess): 0: 00 00 add %al,(%rax) 2: 43 c6 44 37 04 f8 movb $0xf8,0x4(%r15,%r14,1) 8: 74 0b je 0x15 a: 0f 0b ud2 c: 48 f7 03 08 00 00 00 testq $0x8,(%rbx) 13: 74 7f je 0x94 15: bf 01 00 00 00 mov $0x1,%edi 1a: e8 a5 c1 8c f7 call 0xf78cc1c4 1f: e8 e0 b1 b9 f7 call 0xf7b9b204 24: fb sti 25: bf 01 00 00 00 mov $0x1,%edi * 2a: e8 65 b5 ff ff call 0xffffb594 <-- trapping instruction 2f: 43 c6 44 37 08 00 movb $0x0,0x8(%r15,%r14,1) 35: 48 c7 44 24 40 00 00 movq $0x0,0x40(%rsp) 3c: 00 00 3e: 9c pushf 3f: 8f .byte 0x8f