======================================================
WARNING: possible circular locking dependency detected
6.10.0-rc1-syzkaller-00217-g0dcc53abf58d #0 Not tainted
------------------------------------------------------
swapper/0/0 is trying to acquire lock:
ffff8880b9429430 (krc.lock){..-.}-{2:2}, at: krc_this_cpu_lock kernel/rcu/tree.c:3298 [inline]
ffff8880b9429430 (krc.lock){..-.}-{2:2}, at: add_ptr_to_bulk_krc_lock kernel/rcu/tree.c:3697 [inline]
ffff8880b9429430 (krc.lock){..-.}-{2:2}, at: kvfree_call_rcu+0x18a/0x790 kernel/rcu/tree.c:3782
but task is already holding lock:
ffff8880b942a718 (&base->lock){-.-.}-{2:2}, at: lock_timer_base+0x112/0x240 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}:
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
lock_timer_base+0x112/0x240 kernel/time/timer.c:1051
__mod_timer+0x1ca/0xeb0 kernel/time/timer.c:1132
queue_delayed_work_on+0x1ca/0x390 kernel/workqueue.c:2572
kvfree_call_rcu+0x47f/0x790 kernel/rcu/tree.c:3810
rtnl_register_internal+0x482/0x590 net/core/rtnetlink.c:265
rtnl_register+0x36/0x80 net/core/rtnetlink.c:315
ip_rt_init+0x2f6/0x3a0 net/ipv4/route.c:3696
ip_init+0xe/0x20 net/ipv4/ip_output.c:1663
inet_init+0x3d8/0x580 net/ipv4/af_inet.c:1983
do_one_initcall+0x248/0x880 init/main.c:1267
do_initcall_level+0x157/0x210 init/main.c:1329
do_initcalls+0x3f/0x80 init/main.c:1345
kernel_init_freeable+0x435/0x5d0 init/main.c:1578
kernel_init+0x1d/0x2b0 init/main.c:1467
ret_from_fork+0x4b/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: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 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:3298 [inline]
add_ptr_to_bulk_krc_lock kernel/rcu/tree.c:3697 [inline]
kvfree_call_rcu+0x18a/0x790 kernel/rcu/tree.c:3782
trie_delete_elem+0x546/0x6a0 kernel/bpf/lpm_trie.c:540
bpf_prog_2c29ac5cdc6b1842+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_timer_start include/trace/events/timer.h:52 [inline]
enqueue_timer+0x3ce/0x570 kernel/time/timer.c:663
__mod_timer+0x953/0xeb0 kernel/time/timer.c:1181
sk_reset_timer+0x23/0xc0 net/core/sock.c:3419
inet_csk_reset_xmit_timer include/net/inet_connection_sock.h:234 [inline]
tcp_reset_xmit_timer include/net/tcp.h:1418 [inline]
tcp_schedule_loss_probe+0x419/0x560 net/ipv4/tcp_output.c:2911
tcp_write_xmit+0x42c9/0x69d0 net/ipv4/tcp_output.c:2860
tcp_tsq_handler+0x12d/0x200 net/ipv4/tcp_output.c:1088
tcp_tasklet_func+0x4f3/0x570 net/ipv4/tcp_output.c:1120
tasklet_action_common+0x321/0x4d0 kernel/softirq.c:785
handle_softirqs+0x2c4/0x970 kernel/softirq.c:554
__do_softirq kernel/softirq.c:588 [inline]
invoke_softirq kernel/softirq.c:428 [inline]
__irq_exit_rcu+0xf4/0x1c0 kernel/softirq.c:637
irq_exit_rcu+0x9/0x30 kernel/softirq.c:649
common_interrupt+0xaa/0xd0 arch/x86/kernel/irq.c:278
asm_common_interrupt+0x26/0x40 arch/x86/include/asm/idtentry.h:693
native_irq_enable arch/x86/include/asm/irqflags.h:42 [inline]
arch_local_irq_enable arch/x86/include/asm/irqflags.h:77 [inline]
raw_spin_rq_unlock_irq kernel/sched/sched.h:1418 [inline]
finish_lock_switch kernel/sched/core.c:5162 [inline]
finish_task_switch+0x1ea/0x870 kernel/sched/core.c:5280
context_switch kernel/sched/core.c:5411 [inline]
__schedule+0x17f0/0x4a20 kernel/sched/core.c:6745
schedule_idle+0x53/0x90 kernel/sched/core.c:6863
do_idle+0x56a/0x5d0 kernel/sched/idle.c:360
cpu_startup_entry+0x42/0x60 kernel/sched/idle.c:430
rest_init+0x2dc/0x300 init/main.c:747
start_kernel+0x47a/0x500 init/main.c:1103
x86_64_start_reservations+0x2a/0x30 arch/x86/kernel/head64.c:507
x86_64_start_kernel+0x99/0xa0 arch/x86/kernel/head64.c:488
common_startup_64+0x13e/0x147
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 ***
3 locks held by swapper/0/0:
#0: ffff88807b7e2698 (slock-AF_INET){+.-.}-{2:2}, at: spin_lock include/linux/spinlock.h:351 [inline]
#0: ffff88807b7e2698 (slock-AF_INET){+.-.}-{2:2}, at: tcp_tsq_handler+0x20/0x200 net/ipv4/tcp_output.c:1086
#1: ffff8880b942a718 (&base->lock){-.-.}-{2:2}, at: lock_timer_base+0x112/0x240 kernel/time/timer.c:1051
#2: ffffffff8e333f60 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:329 [inline]
#2: ffffffff8e333f60 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:781 [inline]
#2: ffffffff8e333f60 (rcu_read_lock){....}-{1:2}, at: __bpf_trace_run kernel/trace/bpf_trace.c:2402 [inline]
#2: ffffffff8e333f60 (rcu_read_lock){....}-{1:2}, at: bpf_trace_run2+0x1fc/0x540 kernel/trace/bpf_trace.c:2444
stack backtrace:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.10.0-rc1-syzkaller-00217-g0dcc53abf58d #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 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:3298 [inline]
add_ptr_to_bulk_krc_lock kernel/rcu/tree.c:3697 [inline]
kvfree_call_rcu+0x18a/0x790 kernel/rcu/tree.c:3782
trie_delete_elem+0x546/0x6a0 kernel/bpf/lpm_trie.c:540
bpf_prog_2c29ac5cdc6b1842+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_timer_start include/trace/events/timer.h:52 [inline]
enqueue_timer+0x3ce/0x570 kernel/time/timer.c:663
__mod_timer+0x953/0xeb0 kernel/time/timer.c:1181
sk_reset_timer+0x23/0xc0 net/core/sock.c:3419
inet_csk_reset_xmit_timer include/net/inet_connection_sock.h:234 [inline]
tcp_reset_xmit_timer include/net/tcp.h:1418 [inline]
tcp_schedule_loss_probe+0x419/0x560 net/ipv4/tcp_output.c:2911
tcp_write_xmit+0x42c9/0x69d0 net/ipv4/tcp_output.c:2860
tcp_tsq_handler+0x12d/0x200 net/ipv4/tcp_output.c:1088
tcp_tasklet_func+0x4f3/0x570 net/ipv4/tcp_output.c:1120
tasklet_action_common+0x321/0x4d0 kernel/softirq.c:785
handle_softirqs+0x2c4/0x970 kernel/softirq.c:554
__do_softirq kernel/softirq.c:588 [inline]
invoke_softirq kernel/softirq.c:428 [inline]
__irq_exit_rcu+0xf4/0x1c0 kernel/softirq.c:637
irq_exit_rcu+0x9/0x30 kernel/softirq.c:649
common_interrupt+0xaa/0xd0 arch/x86/kernel/irq.c:278
asm_common_interrupt+0x26/0x40 arch/x86/include/asm/idtentry.h:693
RIP: 0010:finish_task_switch+0x1ea/0x870 kernel/sched/core.c:5282
Code: c9 50 e8 99 c9 0b 00 48 83 c4 08 4c 89 f7 e8 cd 38 00 00 0f 1f 44 00 00 4c 89 f7 e8 d0 a6 2a 0a e8 5b f8 36 00 fb 48 8b 5d c0 <48> 8d bb f8 15 00 00 48 89 f8 48 c1 e8 03 49 be 00 00 00 00 00 fc
RSP: 0018:ffffffff8e007b08 EFLAGS: 00000286
RAX: 2526d8bbbfb4fd00 RBX: ffffffff8e094680 RCX: ffffffff947a0603
RDX: dffffc0000000000 RSI: ffffffff8bcaba80 RDI: ffffffff8c1ff240
RBP: ffffffff8e007b50 R08: ffffffff8fad486f R09: 1ffffffff1f5a90d
R10: dffffc0000000000 R11: fffffbfff1f5a90e R12: 1ffff11017287ea7
R13: dffffc0000000000 R14: ffff8880b943e7c0 R15: ffff8880b943f538
context_switch kernel/sched/core.c:5411 [inline]
__schedule+0x17f0/0x4a20 kernel/sched/core.c:6745
schedule_idle+0x53/0x90 kernel/sched/core.c:6863
do_idle+0x56a/0x5d0 kernel/sched/idle.c:360
cpu_startup_entry+0x42/0x60 kernel/sched/idle.c:430
rest_init+0x2dc/0x300 init/main.c:747
start_kernel+0x47a/0x500 init/main.c:1103
x86_64_start_reservations+0x2a/0x30 arch/x86/kernel/head64.c:507
x86_64_start_kernel+0x99/0xa0 arch/x86/kernel/head64.c:488
common_startup_64+0x13e/0x147
----------------
Code disassembly (best guess):
0: c9 leave
1: 50 push %rax
2: e8 99 c9 0b 00 call 0xbc9a0
7: 48 83 c4 08 add $0x8,%rsp
b: 4c 89 f7 mov %r14,%rdi
e: e8 cd 38 00 00 call 0x38e0
13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
18: 4c 89 f7 mov %r14,%rdi
1b: e8 d0 a6 2a 0a call 0xa2aa6f0
20: e8 5b f8 36 00 call 0x36f880
25: fb sti
26: 48 8b 5d c0 mov -0x40(%rbp),%rbx
* 2a: 48 8d bb f8 15 00 00 lea 0x15f8(%rbx),%rdi <-- trapping instruction
31: 48 89 f8 mov %rdi,%rax
34: 48 c1 e8 03 shr $0x3,%rax
38: 49 rex.WB
39: be 00 00 00 00 mov $0x0,%esi
3e: 00 fc add %bh,%ah