============================================ WARNING: possible recursive locking detected 6.14.0-syzkaller-ga8662bcd2ff1 #0 Not tainted -------------------------------------------- syz.3.180/6846 is trying to acquire lock: ffff88804bdb91e0 (&qs->lock){-.-.}-{2:2}, at: queue_stack_map_push_elem+0x353/0x420 kernel/bpf/queue_stack_maps.c:210 but task is already holding lock: ffff888024e411e0 (&qs->lock){-.-.}-{2:2}, at: queue_stack_map_push_elem+0x353/0x420 kernel/bpf/queue_stack_maps.c:210 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock(&qs->lock); lock(&qs->lock); *** DEADLOCK *** May be due to missing lock nesting notation 4 locks held by syz.3.180/6846: #0: ffff88804cc1dc80 (&tsk->futex_exit_mutex){+.+.}-{4:4}, at: futex_cleanup_begin kernel/futex/core.c:1071 [inline] #0: ffff88804cc1dc80 (&tsk->futex_exit_mutex){+.+.}-{4:4}, at: futex_exit_release+0x31/0x220 kernel/futex/core.c:1123 #1: ffffffff8e3c1580 (rcu_read_lock){....}-{1:3}, at: rcu_lock_acquire include/linux/rcupdate.h:331 [inline] #1: ffffffff8e3c1580 (rcu_read_lock){....}-{1:3}, at: rcu_read_lock include/linux/rcupdate.h:841 [inline] #1: ffffffff8e3c1580 (rcu_read_lock){....}-{1:3}, at: __bpf_trace_run kernel/trace/bpf_trace.c:2362 [inline] #1: ffffffff8e3c1580 (rcu_read_lock){....}-{1:3}, at: bpf_trace_run2+0x1b6/0x590 kernel/trace/bpf_trace.c:2404 #2: ffff888024e411e0 (&qs->lock){-.-.}-{2:2}, at: queue_stack_map_push_elem+0x353/0x420 kernel/bpf/queue_stack_maps.c:210 #3: ffffffff8e3c1580 (rcu_read_lock){....}-{1:3}, at: rcu_lock_acquire include/linux/rcupdate.h:331 [inline] #3: ffffffff8e3c1580 (rcu_read_lock){....}-{1:3}, at: rcu_read_lock include/linux/rcupdate.h:841 [inline] #3: ffffffff8e3c1580 (rcu_read_lock){....}-{1:3}, at: __bpf_trace_run kernel/trace/bpf_trace.c:2362 [inline] #3: ffffffff8e3c1580 (rcu_read_lock){....}-{1:3}, at: bpf_trace_run2+0x1b6/0x590 kernel/trace/bpf_trace.c:2404 stack backtrace: CPU: 2 UID: 0 PID: 6846 Comm: syz.3.180 Not tainted 6.14.0-syzkaller-ga8662bcd2ff1 #0 PREEMPT(full) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014 Call Trace: __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120 print_deadlock_bug+0x1e9/0x240 kernel/locking/lockdep.c:3042 check_deadlock kernel/locking/lockdep.c:3094 [inline] validate_chain kernel/locking/lockdep.c:3896 [inline] __lock_acquire+0xff7/0x1ba0 kernel/locking/lockdep.c:5235 lock_acquire kernel/locking/lockdep.c:5866 [inline] lock_acquire+0x179/0x350 kernel/locking/lockdep.c:5823 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0x3a/0x60 kernel/locking/spinlock.c:162 queue_stack_map_push_elem+0x353/0x420 kernel/bpf/queue_stack_maps.c:210 bpf_prog_80daba7f9ca62790+0x43/0x47 bpf_dispatcher_nop_func include/linux/bpf.h:1316 [inline] __bpf_prog_run include/linux/filter.h:718 [inline] bpf_prog_run include/linux/filter.h:725 [inline] __bpf_trace_run kernel/trace/bpf_trace.c:2363 [inline] bpf_trace_run2+0x230/0x590 kernel/trace/bpf_trace.c:2404 __bpf_trace_contention_begin+0xc9/0x110 include/trace/events/lock.h:95 __traceiter_contention_begin+0x5a/0xa0 include/trace/events/lock.h:95 __preempt_count_dec_and_test arch/x86/include/asm/preempt.h:95 [inline] class_preempt_notrace_destructor include/linux/preempt.h:482 [inline] __do_trace_contention_begin include/trace/events/lock.h:95 [inline] trace_contention_begin.constprop.0+0xde/0x160 include/trace/events/lock.h:95 __pv_queued_spin_lock_slowpath+0x109/0xcf0 kernel/locking/qspinlock.c:219 pv_queued_spin_lock_slowpath arch/x86/include/asm/paravirt.h:572 [inline] queued_spin_lock_slowpath arch/x86/include/asm/qspinlock.h:51 [inline] queued_spin_lock include/asm-generic/qspinlock.h:114 [inline] do_raw_spin_lock+0x20e/0x2b0 kernel/locking/spinlock_debug.c:116 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:111 [inline] _raw_spin_lock_irqsave+0x42/0x60 kernel/locking/spinlock.c:162 queue_stack_map_push_elem+0x353/0x420 kernel/bpf/queue_stack_maps.c:210 bpf_prog_80daba7f9ca62790+0x43/0x47 bpf_dispatcher_nop_func include/linux/bpf.h:1316 [inline] __bpf_prog_run include/linux/filter.h:718 [inline] bpf_prog_run include/linux/filter.h:725 [inline] __bpf_trace_run kernel/trace/bpf_trace.c:2363 [inline] bpf_trace_run2+0x230/0x590 kernel/trace/bpf_trace.c:2404 __bpf_trace_contention_begin+0xc9/0x110 include/trace/events/lock.h:95 __traceiter_contention_begin+0x5a/0xa0 include/trace/events/lock.h:95 __do_trace_contention_begin include/trace/events/lock.h:95 [inline] trace_contention_begin+0xc1/0x130 include/trace/events/lock.h:95 __mutex_lock_common kernel/locking/mutex.c:603 [inline] __mutex_lock+0x1a6/0xb90 kernel/locking/mutex.c:746 futex_cleanup_begin kernel/futex/core.c:1071 [inline] futex_exit_release+0x31/0x220 kernel/futex/core.c:1123 exit_mm_release+0x19/0x30 kernel/fork.c:1698 exit_mm kernel/exit.c:562 [inline] do_exit+0x898/0x2c30 kernel/exit.c:940 do_group_exit+0xd3/0x2a0 kernel/exit.c:1102 get_signal+0x2673/0x26d0 kernel/signal.c:3034 arch_do_signal_or_restart+0x8f/0x7d0 arch/x86/kernel/signal.c:337 exit_to_user_mode_loop kernel/entry/common.c:111 [inline] exit_to_user_mode_prepare include/linux/entry-common.h:329 [inline] __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline] syscall_exit_to_user_mode+0x150/0x2a0 kernel/entry/common.c:218 do_syscall_64+0xda/0x260 arch/x86/entry/syscall_64.c:100 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f838f785d19 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 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 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f839067c0e8 EFLAGS: 00000246 ORIG_RAX: 00000000000000ca RAX: 0000000000000001 RBX: 00007f838f975fa8 RCX: 00007f838f785d19 RDX: 00000000000f4240 RSI: 0000000000000081 RDI: 00007f838f975fac RBP: 00007f838f975fa0 R08: 00007f839067d000 R09: 0000000000000000 R10: 0000000000000005 R11: 0000000000000246 R12: 00007f838f975fac R13: 0000000000000000 R14: 00007fff24cae690 R15: 00007fff24cae778