====================================================== WARNING: possible circular locking dependency detected 6.12.0-rc6-syzkaller-00169-g906bd684e4b1 #0 Not tainted ------------------------------------------------------ syz.3.2753/16124 is trying to acquire lock: ffff8880b8629598 (krc.lock){..-.}-{2:2}, at: krc_this_cpu_lock kernel/rcu/tree.c:3312 [inline] ffff8880b8629598 (krc.lock){..-.}-{2:2}, at: add_ptr_to_bulk_krc_lock kernel/rcu/tree.c:3725 [inline] ffff8880b8629598 (krc.lock){..-.}-{2:2}, at: kvfree_call_rcu+0xda/0xbe0 kernel/rcu/tree.c:3811 but task is already holding lock: ffff8880b862a858 (&base->lock){-.-.}-{2:2}, at: lock_timer_base+0x5d/0x220 kernel/time/timer.c:1051 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&base->lock){-.-.}-{2:2}: __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0x3a/0x60 kernel/locking/spinlock.c:162 lock_timer_base+0x5d/0x220 kernel/time/timer.c:1051 __mod_timer+0x426/0xdc0 kernel/time/timer.c:1132 add_timer_global+0x8a/0xc0 kernel/time/timer.c:1330 __queue_delayed_work+0x1ba/0x2e0 kernel/workqueue.c:2523 queue_delayed_work_on+0x12a/0x150 kernel/workqueue.c:2552 kvfree_call_rcu+0x749/0xbe0 kernel/rcu/tree.c:3839 pwq_release_workfn+0x4dd/0xa50 kernel/workqueue.c:5078 kthread_worker_fn+0x305/0xba0 kernel/kthread.c:844 kthread+0x2c1/0x3a0 kernel/kthread.c:389 ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 -> #0 (krc.lock){..-.}-{2:2}: check_prev_add kernel/locking/lockdep.c:3161 [inline] check_prevs_add kernel/locking/lockdep.c:3280 [inline] validate_chain kernel/locking/lockdep.c:3904 [inline] __lock_acquire+0x250b/0x3ce0 kernel/locking/lockdep.c:5202 lock_acquire.part.0+0x11b/0x380 kernel/locking/lockdep.c:5825 __raw_spin_lock include/linux/spinlock_api_smp.h:133 [inline] _raw_spin_lock+0x2e/0x40 kernel/locking/spinlock.c:154 krc_this_cpu_lock kernel/rcu/tree.c:3312 [inline] add_ptr_to_bulk_krc_lock kernel/rcu/tree.c:3725 [inline] kvfree_call_rcu+0xda/0xbe0 kernel/rcu/tree.c:3811 trie_delete_elem+0x5c5/0x820 kernel/bpf/lpm_trie.c:540 bpf_prog_2e5e7763945ac34e+0x45/0x49 bpf_dispatcher_nop_func include/linux/bpf.h:1265 [inline] __bpf_prog_run include/linux/filter.h:701 [inline] bpf_prog_run include/linux/filter.h:708 [inline] __bpf_trace_run kernel/trace/bpf_trace.c:2316 [inline] bpf_trace_run2+0x231/0x590 kernel/trace/bpf_trace.c:2357 __bpf_trace_timer_start+0xc7/0x100 include/trace/events/timer.h:52 __traceiter_timer_start+0x64/0xb0 include/trace/events/timer.h:52 trace_timer_start include/trace/events/timer.h:52 [inline] enqueue_timer+0x2b4/0x550 kernel/time/timer.c:663 internal_add_timer kernel/time/timer.c:688 [inline] __mod_timer+0x8d7/0xdc0 kernel/time/timer.c:1183 add_timer+0x62/0x90 kernel/time/timer.c:1296 dsp_cmx_send+0xc30/0x1760 drivers/isdn/mISDN/dsp_cmx.c:1839 call_timer_fn+0x1a0/0x610 kernel/time/timer.c:1794 expire_timers kernel/time/timer.c:1845 [inline] __run_timers+0x6e8/0x930 kernel/time/timer.c:2419 __run_timer_base kernel/time/timer.c:2430 [inline] __run_timer_base kernel/time/timer.c:2423 [inline] run_timer_base+0x111/0x190 kernel/time/timer.c:2439 run_timer_softirq+0x1a/0x40 kernel/time/timer.c:2449 handle_softirqs+0x213/0x8f0 kernel/softirq.c:554 __do_softirq kernel/softirq.c:588 [inline] invoke_softirq kernel/softirq.c:428 [inline] __irq_exit_rcu kernel/softirq.c:637 [inline] irq_exit_rcu+0xbb/0x120 kernel/softirq.c:649 instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1049 [inline] sysvec_apic_timer_interrupt+0xa4/0xc0 arch/x86/kernel/apic/apic.c:1049 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702 __sanitizer_cov_trace_const_cmp1+0x0/0x20 kernel/kcov.c:294 __unix_dgram_recvmsg+0x4c3/0xe50 net/unix/af_unix.c:2483 unix_dgram_recvmsg+0xd0/0x110 net/unix/af_unix.c:2537 sock_recvmsg_nosec net/socket.c:1051 [inline] ____sys_recvmsg+0x5f8/0x6b0 net/socket.c:2824 ___sys_recvmsg+0x115/0x1a0 net/socket.c:2868 do_recvmmsg+0x2ba/0x750 net/socket.c:2962 __sys_recvmmsg net/socket.c:3041 [inline] __do_sys_recvmmsg net/socket.c:3064 [inline] __se_sys_recvmmsg net/socket.c:3057 [inline] __x64_sys_recvmmsg+0x239/0x290 net/socket.c:3057 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xcd/0x250 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(&base->lock); lock(krc.lock); lock(&base->lock); lock(krc.lock); *** DEADLOCK *** 5 locks held by syz.3.2753/16124: #0: ffff888055462f10 (&u->iolock){+.+.}-{3:3}, at: __unix_dgram_recvmsg+0x267/0xe50 net/unix/af_unix.c:2432 #1: ffffc90000007cb0 ((&dsp_spl_tl)){+.-.}-{0:0}, at: call_timer_fn+0x11a/0x610 kernel/time/timer.c:1791 #2: ffffffff8fac09d8 (dsp_lock){..-.}-{2:2}, at: dsp_cmx_send+0x23/0x1760 drivers/isdn/mISDN/dsp_cmx.c:1632 #3: ffff8880b862a858 (&base->lock){-.-.}-{2:2}, at: lock_timer_base+0x5d/0x220 kernel/time/timer.c:1051 #4: ffffffff8e1b8340 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:337 [inline] #4: ffffffff8e1b8340 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:849 [inline] #4: ffffffff8e1b8340 (rcu_read_lock){....}-{1:2}, at: __bpf_trace_run kernel/trace/bpf_trace.c:2315 [inline] #4: ffffffff8e1b8340 (rcu_read_lock){....}-{1:2}, at: bpf_trace_run2+0x1c2/0x590 kernel/trace/bpf_trace.c:2357 stack backtrace: CPU: 0 UID: 0 PID: 16124 Comm: syz.3.2753 Not tainted 6.12.0-rc6-syzkaller-00169-g906bd684e4b1 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/30/2024 Call Trace: __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120 print_circular_bug+0x41c/0x610 kernel/locking/lockdep.c:2074 check_noncircular+0x31a/0x400 kernel/locking/lockdep.c:2206 check_prev_add kernel/locking/lockdep.c:3161 [inline] check_prevs_add kernel/locking/lockdep.c:3280 [inline] validate_chain kernel/locking/lockdep.c:3904 [inline] __lock_acquire+0x250b/0x3ce0 kernel/locking/lockdep.c:5202 lock_acquire.part.0+0x11b/0x380 kernel/locking/lockdep.c:5825 __raw_spin_lock include/linux/spinlock_api_smp.h:133 [inline] _raw_spin_lock+0x2e/0x40 kernel/locking/spinlock.c:154 krc_this_cpu_lock kernel/rcu/tree.c:3312 [inline] add_ptr_to_bulk_krc_lock kernel/rcu/tree.c:3725 [inline] kvfree_call_rcu+0xda/0xbe0 kernel/rcu/tree.c:3811 trie_delete_elem+0x5c5/0x820 kernel/bpf/lpm_trie.c:540 bpf_prog_2e5e7763945ac34e+0x45/0x49 bpf_dispatcher_nop_func include/linux/bpf.h:1265 [inline] __bpf_prog_run include/linux/filter.h:701 [inline] bpf_prog_run include/linux/filter.h:708 [inline] __bpf_trace_run kernel/trace/bpf_trace.c:2316 [inline] bpf_trace_run2+0x231/0x590 kernel/trace/bpf_trace.c:2357 __bpf_trace_timer_start+0xc7/0x100 include/trace/events/timer.h:52 __traceiter_timer_start+0x64/0xb0 include/trace/events/timer.h:52 trace_timer_start include/trace/events/timer.h:52 [inline] enqueue_timer+0x2b4/0x550 kernel/time/timer.c:663 internal_add_timer kernel/time/timer.c:688 [inline] __mod_timer+0x8d7/0xdc0 kernel/time/timer.c:1183 add_timer+0x62/0x90 kernel/time/timer.c:1296 dsp_cmx_send+0xc30/0x1760 drivers/isdn/mISDN/dsp_cmx.c:1839 call_timer_fn+0x1a0/0x610 kernel/time/timer.c:1794 expire_timers kernel/time/timer.c:1845 [inline] __run_timers+0x6e8/0x930 kernel/time/timer.c:2419 __run_timer_base kernel/time/timer.c:2430 [inline] __run_timer_base kernel/time/timer.c:2423 [inline] run_timer_base+0x111/0x190 kernel/time/timer.c:2439 run_timer_softirq+0x1a/0x40 kernel/time/timer.c:2449 handle_softirqs+0x213/0x8f0 kernel/softirq.c:554 __do_softirq kernel/softirq.c:588 [inline] invoke_softirq kernel/softirq.c:428 [inline] __irq_exit_rcu kernel/softirq.c:637 [inline] irq_exit_rcu+0xbb/0x120 kernel/softirq.c:649 instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1049 [inline] sysvec_apic_timer_interrupt+0xa4/0xc0 arch/x86/kernel/apic/apic.c:1049 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702 RIP: 0010:__sanitizer_cov_trace_const_cmp1+0x0/0x20 kernel/kcov.c:299 Code: 0c 24 48 89 f2 48 89 fe bf 06 00 00 00 e9 b8 fe ff ff 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1e fa 48 8b 0c 24 40 0f b6 d6 40 0f b6 f7 bf 01 00 00 00 e9 RSP: 0000:ffffc90002d87808 EFLAGS: 00000246 RAX: dffffc0000000000 RBX: ffff88802860a3c0 RCX: ffffffff89c2d102 RDX: 1ffff1100aa8c534 RSI: 0000000000000000 RDI: 0000000000000000 RBP: ffff888055462940 R08: 0000000000000000 R09: ffffed100aa8c534 R10: ffff8880554629a7 R11: 0000000000000001 R12: 0000000000000002 R13: 0000000000000000 R14: 0000000000000000 R15: ffff888055462ea8 __unix_dgram_recvmsg+0x4c3/0xe50 net/unix/af_unix.c:2483 unix_dgram_recvmsg+0xd0/0x110 net/unix/af_unix.c:2537 sock_recvmsg_nosec net/socket.c:1051 [inline] ____sys_recvmsg+0x5f8/0x6b0 net/socket.c:2824 ___sys_recvmsg+0x115/0x1a0 net/socket.c:2868 do_recvmmsg+0x2ba/0x750 net/socket.c:2962 __sys_recvmmsg net/socket.c:3041 [inline] __do_sys_recvmmsg net/socket.c:3064 [inline] __se_sys_recvmmsg net/socket.c:3057 [inline] __x64_sys_recvmmsg+0x239/0x290 net/socket.c:3057 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7fde4737e719 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:00007fde4812b038 EFLAGS: 00000246 ORIG_RAX: 000000000000012b RAX: ffffffffffffffda RBX: 00007fde47536058 RCX: 00007fde4737e719 RDX: 0000000000010106 RSI: 00000000200000c0 RDI: 0000000000000003 RBP: 00007fde473f139e R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000002 R11: 0000000000000246 R12: 0000000000000000 R13: 0000000000000000 R14: 00007fde47536058 R15: 00007ffe26a63238 ---------------- Code disassembly (best guess): 0: 0c 24 or $0x24,%al 2: 48 89 f2 mov %rsi,%rdx 5: 48 89 fe mov %rdi,%rsi 8: bf 06 00 00 00 mov $0x6,%edi d: e9 b8 fe ff ff jmp 0xfffffeca 12: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 19: 00 1a: 90 nop 1b: 90 nop 1c: 90 nop 1d: 90 nop 1e: 90 nop 1f: 90 nop 20: 90 nop 21: 90 nop 22: 90 nop 23: 90 nop 24: 90 nop 25: 90 nop 26: 90 nop 27: 90 nop 28: 90 nop 29: 90 nop * 2a: f3 0f 1e fa endbr64 <-- trapping instruction 2e: 48 8b 0c 24 mov (%rsp),%rcx 32: 40 0f b6 d6 movzbl %sil,%edx 36: 40 0f b6 f7 movzbl %dil,%esi 3a: bf 01 00 00 00 mov $0x1,%edi 3f: e9 .byte 0xe9