====================================================== WARNING: possible circular locking dependency detected 6.9.0-syzkaller-12123-g531876c80004 #0 Not tainted ------------------------------------------------------ syz-executor.1/5209 is trying to acquire lock: ffff88807c0dc1d8 (&qs->lock){-...}-{2:2}, at: __queue_map_get+0x14b/0x4d0 kernel/bpf/queue_stack_maps.c:105 but task is already holding lock: ffffc900041c10d8 (&rb->spinlock){-.-.}-{2:2}, at: __bpf_ringbuf_reserve+0x211/0x4f0 kernel/bpf/ringbuf.c:424 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&rb->spinlock){-.-.}-{2:2}: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0xd5/0x120 kernel/locking/spinlock.c:162 __bpf_ringbuf_reserve+0x211/0x4f0 kernel/bpf/ringbuf.c:424 ____bpf_ringbuf_output kernel/bpf/ringbuf.c:534 [inline] bpf_ringbuf_output+0x67/0x1e0 kernel/bpf/ringbuf.c:524 bpf_prog_0359230584593a1e+0x43/0x47 bpf_dispatcher_nop_func include/linux/bpf.h:1243 [inline] __bpf_prog_run include/linux/filter.h:691 [inline] bpf_prog_run include/linux/filter.h:698 [inline] bpf_prog_run_array include/linux/bpf.h:2104 [inline] trace_call_bpf+0x369/0x8a0 kernel/trace/bpf_trace.c:147 perf_trace_run_bpf_submit+0x7c/0x1d0 kernel/events/core.c:10269 perf_trace_lock+0x388/0x490 include/trace/events/lock.h:50 trace_lock_release include/trace/events/lock.h:69 [inline] lock_release+0x986/0x9f0 kernel/locking/lockdep.c:5765 __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:149 [inline] _raw_spin_unlock_irqrestore+0x79/0x140 kernel/locking/spinlock.c:194 __queue_map_get+0x2e2/0x4d0 kernel/bpf/queue_stack_maps.c:123 bpf_prog_00798911c748094f+0x42/0x46 bpf_dispatcher_nop_func include/linux/bpf.h:1243 [inline] __bpf_prog_run include/linux/filter.h:691 [inline] bpf_prog_run include/linux/filter.h:698 [inline] __bpf_trace_run kernel/trace/bpf_trace.c:2403 [inline] bpf_trace_run2+0x2ec/0x540 kernel/trace/bpf_trace.c:2444 trace_contention_end+0xf5/0x120 include/trace/events/lock.h:122 __mutex_lock_common kernel/locking/mutex.c:617 [inline] __mutex_lock+0x2e5/0xd70 kernel/locking/mutex.c:752 device_pm_add+0x78/0x320 drivers/base/power/main.c:137 device_add+0x5e8/0xbf0 drivers/base/core.c:3684 wiphy_register+0x1d3f/0x2b30 net/wireless/core.c:964 ieee80211_register_hw+0x3098/0x3d80 net/mac80211/main.c:1558 mac80211_hwsim_new_radio+0x2597/0x44c0 drivers/net/wireless/virtual/mac80211_hwsim.c:5470 hwsim_new_radio_nl+0xe4c/0x21d0 drivers/net/wireless/virtual/mac80211_hwsim.c:6151 genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline] genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline] genl_rcv_msg+0xb14/0xec0 net/netlink/genetlink.c:1210 netlink_rcv_skb+0x1e3/0x430 net/netlink/af_netlink.c:2564 genl_rcv+0x28/0x40 net/netlink/genetlink.c:1219 netlink_unicast_kernel net/netlink/af_netlink.c:1335 [inline] netlink_unicast+0x7ea/0x980 net/netlink/af_netlink.c:1361 netlink_sendmsg+0x8db/0xcb0 net/netlink/af_netlink.c:1905 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg+0x221/0x270 net/socket.c:745 __sys_sendto+0x3a4/0x4f0 net/socket.c:2192 __do_sys_sendto net/socket.c:2204 [inline] __se_sys_sendto net/socket.c:2200 [inline] __x64_sys_sendto+0xde/0x100 net/socket.c:2200 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f -> #0 (&qs->lock){-...}-{2:2}: check_prev_add kernel/locking/lockdep.c:3134 [inline] check_prevs_add kernel/locking/lockdep.c:3253 [inline] validate_chain+0x18e0/0x5900 kernel/locking/lockdep.c:3869 __lock_acquire+0x1346/0x1fd0 kernel/locking/lockdep.c:5137 lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0xd5/0x120 kernel/locking/spinlock.c:162 __queue_map_get+0x14b/0x4d0 kernel/bpf/queue_stack_maps.c:105 bpf_prog_00798911c748094f+0x42/0x46 bpf_dispatcher_nop_func include/linux/bpf.h:1243 [inline] __bpf_prog_run include/linux/filter.h:691 [inline] bpf_prog_run include/linux/filter.h:698 [inline] __bpf_trace_run kernel/trace/bpf_trace.c:2403 [inline] bpf_trace_run2+0x2ec/0x540 kernel/trace/bpf_trace.c:2444 trace_contention_end+0x114/0x140 include/trace/events/lock.h:122 __pv_queued_spin_lock_slowpath+0xb81/0xdc0 kernel/locking/qspinlock.c:557 pv_queued_spin_lock_slowpath arch/x86/include/asm/paravirt.h:584 [inline] queued_spin_lock_slowpath+0x42/0x50 arch/x86/include/asm/qspinlock.h:51 queued_spin_lock include/asm-generic/qspinlock.h:114 [inline] do_raw_spin_lock+0x272/0x370 kernel/locking/spinlock_debug.c:116 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:111 [inline] _raw_spin_lock_irqsave+0xe1/0x120 kernel/locking/spinlock.c:162 __bpf_ringbuf_reserve+0x211/0x4f0 kernel/bpf/ringbuf.c:424 ____bpf_ringbuf_output kernel/bpf/ringbuf.c:534 [inline] bpf_ringbuf_output+0x67/0x1e0 kernel/bpf/ringbuf.c:524 bpf_prog_0359230584593a1e+0x43/0x47 bpf_dispatcher_nop_func include/linux/bpf.h:1243 [inline] __bpf_prog_run include/linux/filter.h:691 [inline] bpf_prog_run include/linux/filter.h:698 [inline] bpf_prog_run_array include/linux/bpf.h:2104 [inline] trace_call_bpf+0x369/0x8a0 kernel/trace/bpf_trace.c:147 perf_trace_run_bpf_submit+0x7c/0x1d0 kernel/events/core.c:10269 perf_trace_lock+0x388/0x490 include/trace/events/lock.h:50 trace_lock_release include/trace/events/lock.h:69 [inline] lock_release+0x986/0x9f0 kernel/locking/lockdep.c:5765 __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:149 [inline] _raw_spin_unlock_irqrestore+0x79/0x140 kernel/locking/spinlock.c:194 debug_object_activate+0x3e4/0x510 lib/debugobjects.c:726 debug_hrtimer_activate kernel/time/hrtimer.c:423 [inline] debug_activate kernel/time/hrtimer.c:478 [inline] enqueue_hrtimer+0x30/0x3c0 kernel/time/hrtimer.c:1085 __run_hrtimer kernel/time/hrtimer.c:1704 [inline] __hrtimer_run_queues+0x6cb/0xd50 kernel/time/hrtimer.c:1751 hrtimer_interrupt+0x396/0x990 kernel/time/hrtimer.c:1813 local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1032 [inline] __sysvec_apic_timer_interrupt+0x110/0x3f0 arch/x86/kernel/apic/apic.c:1049 instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1043 [inline] sysvec_apic_timer_interrupt+0xa1/0xc0 arch/x86/kernel/apic/apic.c:1043 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702 csd_lock_wait kernel/smp.c:311 [inline] smp_call_function_many_cond+0x1865/0x29d0 kernel/smp.c:855 on_each_cpu_cond_mask+0x3f/0x80 kernel/smp.c:1023 on_each_cpu include/linux/smp.h:71 [inline] text_poke_sync arch/x86/kernel/alternative.c:2069 [inline] text_poke_bp_batch+0x352/0xb30 arch/x86/kernel/alternative.c:2279 text_poke_flush arch/x86/kernel/alternative.c:2470 [inline] text_poke_finish+0x30/0x50 arch/x86/kernel/alternative.c:2477 arch_jump_label_transform_apply+0x1c/0x30 arch/x86/kernel/jump_label.c:146 static_key_enable_cpuslocked+0x136/0x260 kernel/jump_label.c:205 static_key_enable+0x1a/0x20 kernel/jump_label.c:218 tracepoint_add_func+0x953/0x9e0 kernel/tracepoint.c:361 tracepoint_probe_register_prio_may_exist+0x122/0x190 kernel/tracepoint.c:482 bpf_raw_tp_link_attach+0x48b/0x6e0 kernel/bpf/syscall.c:3895 bpf_raw_tracepoint_open+0x1c2/0x240 kernel/bpf/syscall.c:3926 __sys_bpf+0x3c0/0x810 kernel/bpf/syscall.c:5751 __do_sys_bpf kernel/bpf/syscall.c:5816 [inline] __se_sys_bpf kernel/bpf/syscall.c:5814 [inline] __x64_sys_bpf+0x7c/0x90 kernel/bpf/syscall.c:5814 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&rb->spinlock); lock(&qs->lock); lock(&rb->spinlock); lock(&qs->lock); *** DEADLOCK *** 9 locks held by syz-executor.1/5209: #0: ffffffff8e3808a8 (tracepoints_mutex){+.+.}-{3:3}, at: tracepoint_probe_register_prio_may_exist+0xbb/0x190 kernel/tracepoint.c:478 #1: ffffffff8e1ce470 (cpu_hotplug_lock){++++}-{0:0}, at: static_key_enable+0x12/0x20 kernel/jump_label.c:217 #2: ffffffff8e3e1928 (jump_label_mutex){+.+.}-{3:3}, at: jump_label_lock kernel/jump_label.c:27 [inline] #2: ffffffff8e3e1928 (jump_label_mutex){+.+.}-{3:3}, at: static_key_enable_cpuslocked+0xd7/0x260 kernel/jump_label.c:202 #3: ffffffff8e1e3548 (text_mutex){+.+.}-{3:3}, at: arch_jump_label_transform_apply+0x17/0x30 arch/x86/kernel/jump_label.c:145 #4: ffff8880b942c898 (hrtimer_bases.lock){-.-.}-{2:2}, at: __run_hrtimer kernel/time/hrtimer.c:1691 [inline] #4: ffff8880b942c898 (hrtimer_bases.lock){-.-.}-{2:2}, at: __hrtimer_run_queues+0x670/0xd50 kernel/time/hrtimer.c:1751 #5: ffffffff94985ff8 (&obj_hash[i].lock){-.-.}-{2:2}, at: debug_object_activate+0x16d/0x510 lib/debugobjects.c:708 #6: ffffffff8e333e60 (rcu_read_lock){....}-{1:2}, at: trace_call_bpf+0xbc/0x8a0 #7: ffffc900041c10d8 (&rb->spinlock){-.-.}-{2:2}, at: __bpf_ringbuf_reserve+0x211/0x4f0 kernel/bpf/ringbuf.c:424 #8: ffffffff8e333e60 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:329 [inline] #8: ffffffff8e333e60 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:781 [inline] #8: ffffffff8e333e60 (rcu_read_lock){....}-{1:2}, at: __bpf_trace_run kernel/trace/bpf_trace.c:2402 [inline] #8: ffffffff8e333e60 (rcu_read_lock){....}-{1:2}, at: bpf_trace_run2+0x1fc/0x540 kernel/trace/bpf_trace.c:2444 stack backtrace: CPU: 0 PID: 5209 Comm: syz-executor.1 Not tainted 6.9.0-syzkaller-12123-g531876c80004 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/02/2024 Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114 check_noncircular+0x36a/0x4a0 kernel/locking/lockdep.c:2187 check_prev_add kernel/locking/lockdep.c:3134 [inline] check_prevs_add kernel/locking/lockdep.c:3253 [inline] validate_chain+0x18e0/0x5900 kernel/locking/lockdep.c:3869 __lock_acquire+0x1346/0x1fd0 kernel/locking/lockdep.c:5137 lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0xd5/0x120 kernel/locking/spinlock.c:162 __queue_map_get+0x14b/0x4d0 kernel/bpf/queue_stack_maps.c:105 bpf_prog_00798911c748094f+0x42/0x46 bpf_dispatcher_nop_func include/linux/bpf.h:1243 [inline] __bpf_prog_run include/linux/filter.h:691 [inline] bpf_prog_run include/linux/filter.h:698 [inline] __bpf_trace_run kernel/trace/bpf_trace.c:2403 [inline] bpf_trace_run2+0x2ec/0x540 kernel/trace/bpf_trace.c:2444 trace_contention_end+0x114/0x140 include/trace/events/lock.h:122 __pv_queued_spin_lock_slowpath+0xb81/0xdc0 kernel/locking/qspinlock.c:557 pv_queued_spin_lock_slowpath arch/x86/include/asm/paravirt.h:584 [inline] queued_spin_lock_slowpath+0x42/0x50 arch/x86/include/asm/qspinlock.h:51 queued_spin_lock include/asm-generic/qspinlock.h:114 [inline] do_raw_spin_lock+0x272/0x370 kernel/locking/spinlock_debug.c:116 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:111 [inline] _raw_spin_lock_irqsave+0xe1/0x120 kernel/locking/spinlock.c:162 __bpf_ringbuf_reserve+0x211/0x4f0 kernel/bpf/ringbuf.c:424 ____bpf_ringbuf_output kernel/bpf/ringbuf.c:534 [inline] bpf_ringbuf_output+0x67/0x1e0 kernel/bpf/ringbuf.c:524 bpf_prog_0359230584593a1e+0x43/0x47 bpf_dispatcher_nop_func include/linux/bpf.h:1243 [inline] __bpf_prog_run include/linux/filter.h:691 [inline] bpf_prog_run include/linux/filter.h:698 [inline] bpf_prog_run_array include/linux/bpf.h:2104 [inline] trace_call_bpf+0x369/0x8a0 kernel/trace/bpf_trace.c:147 perf_trace_run_bpf_submit+0x7c/0x1d0 kernel/events/core.c:10269 perf_trace_lock+0x388/0x490 include/trace/events/lock.h:50 trace_lock_release include/trace/events/lock.h:69 [inline] lock_release+0x986/0x9f0 kernel/locking/lockdep.c:5765 __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:149 [inline] _raw_spin_unlock_irqrestore+0x79/0x140 kernel/locking/spinlock.c:194 debug_object_activate+0x3e4/0x510 lib/debugobjects.c:726 debug_hrtimer_activate kernel/time/hrtimer.c:423 [inline] debug_activate kernel/time/hrtimer.c:478 [inline] enqueue_hrtimer+0x30/0x3c0 kernel/time/hrtimer.c:1085 __run_hrtimer kernel/time/hrtimer.c:1704 [inline] __hrtimer_run_queues+0x6cb/0xd50 kernel/time/hrtimer.c:1751 hrtimer_interrupt+0x396/0x990 kernel/time/hrtimer.c:1813 local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1032 [inline] __sysvec_apic_timer_interrupt+0x110/0x3f0 arch/x86/kernel/apic/apic.c:1049 instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1043 [inline] sysvec_apic_timer_interrupt+0xa1/0xc0 arch/x86/kernel/apic/apic.c:1043 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702 RIP: 0010:csd_lock_wait kernel/smp.c:311 [inline] RIP: 0010:smp_call_function_many_cond+0x1865/0x29d0 kernel/smp.c:855 Code: 89 e6 83 e6 01 31 ff e8 99 09 0c 00 41 83 e4 01 49 bc 00 00 00 00 00 fc ff df 75 07 e8 44 05 0c 00 eb 38 f3 90 42 0f b6 04 23 <84> c0 75 11 41 f7 45 00 01 00 00 00 74 1e e8 28 05 0c 00 eb e4 44 RSP: 0018:ffffc90004137660 EFLAGS: 00000283 RAX: 0000000000000000 RBX: 1ffff110172a88a9 RCX: 0000000000040000 RDX: ffffc90009651000 RSI: 000000000000c291 RDI: 000000000000c292 RBP: ffffc90004137840 R08: ffffffff818a0f27 R09: 1ffffffff25f50b0 R10: dffffc0000000000 R11: fffffbfff25f50b1 R12: dffffc0000000000 R13: ffff8880b9544548 R14: ffff8880b943f900 R15: 0000000000000001 on_each_cpu_cond_mask+0x3f/0x80 kernel/smp.c:1023 on_each_cpu include/linux/smp.h:71 [inline] text_poke_sync arch/x86/kernel/alternative.c:2069 [inline] text_poke_bp_batch+0x352/0xb30 arch/x86/kernel/alternative.c:2279 text_poke_flush arch/x86/kernel/alternative.c:2470 [inline] text_poke_finish+0x30/0x50 arch/x86/kernel/alternative.c:2477 arch_jump_label_transform_apply+0x1c/0x30 arch/x86/kernel/jump_label.c:146 static_key_enable_cpuslocked+0x136/0x260 kernel/jump_label.c:205 static_key_enable+0x1a/0x20 kernel/jump_label.c:218 tracepoint_add_func+0x953/0x9e0 kernel/tracepoint.c:361 tracepoint_probe_register_prio_may_exist+0x122/0x190 kernel/tracepoint.c:482 bpf_raw_tp_link_attach+0x48b/0x6e0 kernel/bpf/syscall.c:3895 bpf_raw_tracepoint_open+0x1c2/0x240 kernel/bpf/syscall.c:3926 __sys_bpf+0x3c0/0x810 kernel/bpf/syscall.c:5751 __do_sys_bpf kernel/bpf/syscall.c:5816 [inline] __se_sys_bpf kernel/bpf/syscall.c:5814 [inline] __x64_sys_bpf+0x7c/0x90 kernel/bpf/syscall.c:5814 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7fd9fd87cee9 Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 e1 20 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fd9fe61a0c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000141 RAX: ffffffffffffffda RBX: 00007fd9fd9b3fa0 RCX: 00007fd9fd87cee9 RDX: 0000000000000010 RSI: 0000000020000180 RDI: 0000000000000011 RBP: 00007fd9fd8c947f R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 000000000000000b R14: 00007fd9fd9b3fa0 R15: 00007ffc1ce86fb8 ---------------- Code disassembly (best guess): 0: 89 e6 mov %esp,%esi 2: 83 e6 01 and $0x1,%esi 5: 31 ff xor %edi,%edi 7: e8 99 09 0c 00 call 0xc09a5 c: 41 83 e4 01 and $0x1,%r12d 10: 49 bc 00 00 00 00 00 movabs $0xdffffc0000000000,%r12 17: fc ff df 1a: 75 07 jne 0x23 1c: e8 44 05 0c 00 call 0xc0565 21: eb 38 jmp 0x5b 23: f3 90 pause 25: 42 0f b6 04 23 movzbl (%rbx,%r12,1),%eax * 2a: 84 c0 test %al,%al <-- trapping instruction 2c: 75 11 jne 0x3f 2e: 41 f7 45 00 01 00 00 testl $0x1,0x0(%r13) 35: 00 36: 74 1e je 0x56 38: e8 28 05 0c 00 call 0xc0565 3d: eb e4 jmp 0x23 3f: 44 rex.R