====================================================== WARNING: possible circular locking dependency detected 6.12.0-rc5-syzkaller-g6c52d4da1c74 #0 Not tainted ------------------------------------------------------ syz.7.538/7921 is trying to acquire lock: ffff8880b8729430 (krc.lock){-.-.}-{2:2}, at: krc_this_cpu_lock kernel/rcu/tree.c:3312 [inline] ffff8880b8729430 (krc.lock){-.-.}-{2:2}, at: add_ptr_to_bulk_krc_lock kernel/rcu/tree.c:3725 [inline] ffff8880b8729430 (krc.lock){-.-.}-{2:2}, at: kvfree_call_rcu+0x18a/0x790 kernel/rcu/tree.c:3811 but task is already holding lock: ffff8880b872c898 (hrtimer_bases.lock){-.-.}-{2:2}, at: __run_hrtimer kernel/time/hrtimer.c:1695 [inline] ffff8880b872c898 (hrtimer_bases.lock){-.-.}-{2:2}, at: __hrtimer_run_queues+0x670/0xd50 kernel/time/hrtimer.c:1755 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (hrtimer_bases.lock){-.-.}-{2:2}: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5825 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0xd5/0x120 kernel/locking/spinlock.c:162 lock_hrtimer_base kernel/time/hrtimer.c:175 [inline] hrtimer_start_range_ns+0x109/0xca0 kernel/time/hrtimer.c:1300 hrtimer_start include/linux/hrtimer.h:275 [inline] run_page_cache_worker kernel/rcu/tree.c:3707 [inline] kvfree_call_rcu+0x5e6/0x790 kernel/rcu/tree.c:3813 pwq_release_workfn+0x664/0x800 kernel/workqueue.c:5078 kthread_worker_fn+0x500/0xb70 kernel/kthread.c:844 kthread+0x2f0/0x390 kernel/kthread.c:389 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:3161 [inline] check_prevs_add kernel/locking/lockdep.c:3280 [inline] validate_chain+0x18ef/0x5920 kernel/locking/lockdep.c:3904 __lock_acquire+0x1384/0x2050 kernel/locking/lockdep.c:5202 lock_acquire+0x1ed/0x550 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+0x18a/0x790 kernel/rcu/tree.c:3811 trie_delete_elem+0x546/0x6a0 kernel/bpf/lpm_trie.c:540 bpf_prog_2c29ac5cdc6b1842+0x43/0x47 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+0x2ec/0x540 kernel/trace/bpf_trace.c:2357 __traceiter_hrtimer_start+0x76/0xd0 include/trace/events/timer.h:222 trace_hrtimer_start include/trace/events/timer.h:222 [inline] debug_activate kernel/time/hrtimer.c:479 [inline] enqueue_hrtimer+0x35a/0x3c0 kernel/time/hrtimer.c:1085 __run_hrtimer kernel/time/hrtimer.c:1708 [inline] __hrtimer_run_queues+0x6cb/0xd50 kernel/time/hrtimer.c:1755 hrtimer_interrupt+0x396/0x990 kernel/time/hrtimer.c:1817 local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1038 [inline] __sysvec_apic_timer_interrupt+0x110/0x420 arch/x86/kernel/apic/apic.c:1055 instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1049 [inline] sysvec_apic_timer_interrupt+0xa1/0xc0 arch/x86/kernel/apic/apic.c:1049 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702 check_kcov_mode kernel/kcov.c:185 [inline] __sanitizer_cov_trace_pc+0x37/0x70 kernel/kcov.c:217 __page_table_check_pte_clear+0x3f/0x80 mm/page_table_check.c:169 get_and_clear_full_ptes include/linux/pgtable.h:684 [inline] zap_present_folio_ptes mm/memory.c:1496 [inline] zap_present_ptes mm/memory.c:1579 [inline] zap_pte_range mm/memory.c:1621 [inline] zap_pmd_range mm/memory.c:1739 [inline] zap_pud_range mm/memory.c:1768 [inline] zap_p4d_range mm/memory.c:1789 [inline] unmap_page_range+0x2a13/0x40e0 mm/memory.c:1810 unmap_vmas+0x3cc/0x5f0 mm/memory.c:1900 exit_mmap+0x275/0xc40 mm/mmap.c:1912 __mmput+0x115/0x390 kernel/fork.c:1347 exit_mm+0x220/0x310 kernel/exit.c:571 do_exit+0x9b2/0x28e0 kernel/exit.c:926 do_group_exit+0x207/0x2c0 kernel/exit.c:1088 get_signal+0x16a3/0x1740 kernel/signal.c:2917 arch_do_signal_or_restart+0x96/0x860 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:328 [inline] __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline] syscall_exit_to_user_mode+0xc9/0x370 kernel/entry/common.c:218 do_syscall_64+0x100/0x230 arch/x86/entry/common.c:89 entry_SYSCALL_64_after_hwframe+0x77/0x7f other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(hrtimer_bases.lock); lock(krc.lock); lock(hrtimer_bases.lock); lock(krc.lock); *** DEADLOCK *** 5 locks held by syz.7.538/7921: #0: ffff888011b7cd98 (&mm->mmap_lock){++++}-{3:3}, at: mmap_read_lock include/linux/mmap_lock.h:144 [inline] #0: ffff888011b7cd98 (&mm->mmap_lock){++++}-{3:3}, at: exit_mmap+0x165/0xc40 mm/mmap.c:1896 #1: ffffffff8e937da0 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:337 [inline] #1: ffffffff8e937da0 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:849 [inline] #1: ffffffff8e937da0 (rcu_read_lock){....}-{1:2}, at: __pte_offset_map+0x82/0x380 mm/pgtable-generic.c:287 #2: ffff888033431c18 (ptlock_ptr(ptdesc)#2){+.+.}-{2:2}, at: spin_lock include/linux/spinlock.h:351 [inline] #2: ffff888033431c18 (ptlock_ptr(ptdesc)#2){+.+.}-{2:2}, at: __pte_offset_map_lock+0x1ba/0x300 mm/pgtable-generic.c:375 #3: ffff8880b872c898 (hrtimer_bases.lock){-.-.}-{2:2}, at: __run_hrtimer kernel/time/hrtimer.c:1695 [inline] #3: ffff8880b872c898 (hrtimer_bases.lock){-.-.}-{2:2}, at: __hrtimer_run_queues+0x670/0xd50 kernel/time/hrtimer.c:1755 #4: ffffffff8e937da0 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:337 [inline] #4: ffffffff8e937da0 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:849 [inline] #4: ffffffff8e937da0 (rcu_read_lock){....}-{1:2}, at: __bpf_trace_run kernel/trace/bpf_trace.c:2315 [inline] #4: ffffffff8e937da0 (rcu_read_lock){....}-{1:2}, at: bpf_trace_run2+0x1fc/0x540 kernel/trace/bpf_trace.c:2357 stack backtrace: CPU: 1 UID: 0 PID: 7921 Comm: syz.7.538 Not tainted 6.12.0-rc5-syzkaller-g6c52d4da1c74 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024 Call Trace: __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120 print_circular_bug+0x13a/0x1b0 kernel/locking/lockdep.c:2074 check_noncircular+0x36a/0x4a0 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+0x18ef/0x5920 kernel/locking/lockdep.c:3904 __lock_acquire+0x1384/0x2050 kernel/locking/lockdep.c:5202 lock_acquire+0x1ed/0x550 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+0x18a/0x790 kernel/rcu/tree.c:3811 trie_delete_elem+0x546/0x6a0 kernel/bpf/lpm_trie.c:540 bpf_prog_2c29ac5cdc6b1842+0x43/0x47 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+0x2ec/0x540 kernel/trace/bpf_trace.c:2357 __traceiter_hrtimer_start+0x76/0xd0 include/trace/events/timer.h:222 trace_hrtimer_start include/trace/events/timer.h:222 [inline] debug_activate kernel/time/hrtimer.c:479 [inline] enqueue_hrtimer+0x35a/0x3c0 kernel/time/hrtimer.c:1085 __run_hrtimer kernel/time/hrtimer.c:1708 [inline] __hrtimer_run_queues+0x6cb/0xd50 kernel/time/hrtimer.c:1755 hrtimer_interrupt+0x396/0x990 kernel/time/hrtimer.c:1817 local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1038 [inline] __sysvec_apic_timer_interrupt+0x110/0x420 arch/x86/kernel/apic/apic.c:1055 instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1049 [inline] sysvec_apic_timer_interrupt+0xa1/0xc0 arch/x86/kernel/apic/apic.c:1049 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702 RIP: 0010:check_kcov_mode kernel/kcov.c:194 [inline] RIP: 0010:__sanitizer_cov_trace_pc+0x37/0x70 kernel/kcov.c:217 Code: c0 d7 03 00 65 8b 15 90 fd 6e 7e 81 e2 00 01 ff 00 74 11 81 fa 00 01 00 00 75 35 83 b9 1c 16 00 00 00 74 2c 8b 91 f8 15 00 00 <83> fa 02 75 21 48 8b 91 00 16 00 00 48 8b 32 48 8d 7e 01 8b 89 fc RSP: 0018:ffffc9000473f2d0 EFLAGS: 00000246 RAX: ffffffff820b716f RBX: 0000000000000005 RCX: ffff8880271a5a00 RDX: 0000000000000000 RSI: 0000000000000005 RDI: 0000000000000005 RBP: ffffc9000473f610 R08: ffffffff820b7160 R09: 1ffffd4000301e30 R10: dffffc0000000000 R11: fffff94000301e31 R12: ffffffff8ea3a180 R13: 1ffff1100536a01f R14: 80000000603c6007 R15: ffff888011b7cc00 __page_table_check_pte_clear+0x3f/0x80 mm/page_table_check.c:169 get_and_clear_full_ptes include/linux/pgtable.h:684 [inline] zap_present_folio_ptes mm/memory.c:1496 [inline] zap_present_ptes mm/memory.c:1579 [inline] zap_pte_range mm/memory.c:1621 [inline] zap_pmd_range mm/memory.c:1739 [inline] zap_pud_range mm/memory.c:1768 [inline] zap_p4d_range mm/memory.c:1789 [inline] unmap_page_range+0x2a13/0x40e0 mm/memory.c:1810 unmap_vmas+0x3cc/0x5f0 mm/memory.c:1900 exit_mmap+0x275/0xc40 mm/mmap.c:1912 __mmput+0x115/0x390 kernel/fork.c:1347 exit_mm+0x220/0x310 kernel/exit.c:571 do_exit+0x9b2/0x28e0 kernel/exit.c:926 do_group_exit+0x207/0x2c0 kernel/exit.c:1088 get_signal+0x16a3/0x1740 kernel/signal.c:2917 arch_do_signal_or_restart+0x96/0x860 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:328 [inline] __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline] syscall_exit_to_user_mode+0xc9/0x370 kernel/entry/common.c:218 do_syscall_64+0x100/0x230 arch/x86/entry/common.c:89 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f2d46b7e719 Code: Unable to access opcode bytes at 0x7f2d46b7e6ef. RSP: 002b:00007f2d47970038 EFLAGS: 00000246 ORIG_RAX: 0000000000000029 RAX: 0000000000000024 RBX: 00007f2d46d35f80 RCX: 00007f2d46b7e719 RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000025 RBP: 00007f2d46bf132e R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 0000000000000000 R14: 00007f2d46d35f80 R15: 00007ffdbe8da388 ---------------- Code disassembly (best guess): 0: c0 d7 03 rcl $0x3,%bh 3: 00 65 8b add %ah,-0x75(%rbp) 6: 15 90 fd 6e 7e adc $0x7e6efd90,%eax b: 81 e2 00 01 ff 00 and $0xff0100,%edx 11: 74 11 je 0x24 13: 81 fa 00 01 00 00 cmp $0x100,%edx 19: 75 35 jne 0x50 1b: 83 b9 1c 16 00 00 00 cmpl $0x0,0x161c(%rcx) 22: 74 2c je 0x50 24: 8b 91 f8 15 00 00 mov 0x15f8(%rcx),%edx * 2a: 83 fa 02 cmp $0x2,%edx <-- trapping instruction 2d: 75 21 jne 0x50 2f: 48 8b 91 00 16 00 00 mov 0x1600(%rcx),%rdx 36: 48 8b 32 mov (%rdx),%rsi 39: 48 8d 7e 01 lea 0x1(%rsi),%rdi 3d: 8b .byte 0x8b 3e: 89 fc mov %edi,%esp