Hello, kernel test robot noticed "kernel/rcu/tree.c:#Illegal_rcu_softirq_qs()in_RCU_read-side_critical_section" on: commit: 3183059ad82a0daa8292daf43c325bac57daceb5 ("rcu: Add lockdep checks and kernel-doc header to rcu_softirq_qs()") https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master [test failed on linux-next/master 6bd343537461b57f3efe5dfc5fc193a232dfef1e] in testcase: trinity version: with following parameters: runtime: 300s group: group-03 nr_groups: 5 compiler: gcc-13 test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G (please refer to attached dmesg/kmsg for entire log/backtrace) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <oliver.sang@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-lkp/202404161239.4aa01f2-lkp@xxxxxxxxx [ 293.025781][ C0] WARNING: suspicious RCU usage [ 293.026196][ C0] 6.9.0-rc2-00001-g3183059ad82a #1 Tainted: G W [ 293.026856][ C0] ----------------------------- [ 293.027278][ C0] kernel/rcu/tree.c:269 Illegal rcu_softirq_qs() in RCU read-side critical section! [ 293.028021][ C0] [ 293.028021][ C0] other info that might help us debug this: [ 293.028021][ C0] [ 293.028967][ C0] [ 293.028967][ C0] rcu_scheduler_active = 2, debug_locks = 1 [ 293.029640][ C0] 1 lock held by ksoftirqd/0/14: [ 293.030049][ C0] #0: ffffffff85ee8ba0 (rcu_read_lock_sched){....}-{1:2}, at: __virt_addr_valid (include/linux/rcupdate.h:329 (discriminator 1) include/linux/rcupdate.h:873 (discriminator 1) include/linux/mmzone.h:2019 (discriminator 1) arch/x86/mm/physaddr.c:65 (discriminator 1)) [ 293.031027][ C0] [ 293.031027][ C0] stack backtrace: [ 293.031577][ C0] CPU: 0 PID: 14 Comm: ksoftirqd/0 Tainted: G W 6.9.0-rc2-00001-g3183059ad82a #1 [ 293.032489][ C0] Call Trace: [ 293.032778][ C0] <IRQ> [ 293.033025][ C0] dump_stack_lvl (lib/dump_stack.c:117) [ 293.033421][ C0] lockdep_rcu_suspicious (include/linux/context_tracking.h:153 kernel/locking/lockdep.c:6713) [ 293.033864][ C0] rcu_softirq_qs (kernel/rcu/tree.c:269 (discriminator 11)) [ 293.034273][ C0] __do_softirq (kernel/softirq.c:568) [ 293.034723][ C0] ? __lock_text_end (kernel/softirq.c:512) [ 293.035189][ C0] ? tick_handle_periodic (kernel/time/tick-common.c:131 (discriminator 1)) [ 293.035627][ C0] irq_exit_rcu (kernel/softirq.c:428 kernel/softirq.c:633 kernel/softirq.c:645) [ 293.035994][ C0] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1043 (discriminator 47) arch/x86/kernel/apic/apic.c:1043 (discriminator 47)) [ 293.036495][ C0] </IRQ> [ 293.036811][ C0] <TASK> [ 293.037091][ C0] asm_sysvec_apic_timer_interrupt (arch/x86/include/asm/idtentry.h:702) [ 293.037626][ C0] RIP: 0010:lock_acquire (kernel/locking/lockdep.c:5722) [ 293.038107][ C0] Code: b8 ff ff ff ff 48 83 c4 28 65 0f c1 05 5a f4 c9 7e 83 f8 01 0f 85 8a 02 00 00 48 85 ed 74 01 fb 48 b8 00 00 00 00 00 fc ff df <48> 01 c3 48 c7 03 00 00 00 00 48 c7 43 08 00 00 00 00 48 8b 84 24 All code ======== 0: b8 ff ff ff ff mov $0xffffffff,%eax 5: 48 83 c4 28 add $0x28,%rsp 9: 65 0f c1 05 5a f4 c9 xadd %eax,%gs:0x7ec9f45a(%rip) # 0x7ec9f46b 10: 7e 11: 83 f8 01 cmp $0x1,%eax 14: 0f 85 8a 02 00 00 jne 0x2a4 1a: 48 85 ed test %rbp,%rbp 1d: 74 01 je 0x20 1f: fb sti 20: 48 b8 00 00 00 00 00 movabs $0xdffffc0000000000,%rax 27: fc ff df 2a:* 48 01 c3 add %rax,%rbx <-- trapping instruction 2d: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) 34: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 3b: 00 3c: 48 rex.W 3d: 8b .byte 0x8b 3e: 84 .byte 0x84 3f: 24 .byte 0x24 Code starting with the faulting instruction =========================================== 0: 48 01 c3 add %rax,%rbx 3: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) a: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 11: 00 12: 48 rex.W 13: 8b .byte 0x8b 14: 84 .byte 0x84 15: 24 .byte 0x24 [ 293.039747][ C0] RSP: 0018:ffff888106a6fb58 EFLAGS: 00000206 [ 293.040272][ C0] RAX: dffffc0000000000 RBX: 1ffff11020d4df6d RCX: 0000000000000000 [ 293.040938][ C0] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 [ 293.041606][ C0] RBP: 0000000000000200 R08: 0000000000000000 R09: 0000000000000000 [ 293.042327][ C0] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 [ 293.043046][ C0] R13: 0000000000000000 R14: ffffffff85ee8ba0 R15: 0000000000000000 [ 293.043775][ C0] ? lock_sync (kernel/locking/lockdep.c:5722) [ 293.044186][ C0] ? lock_acquire (kernel/locking/lockdep.c:467 (discriminator 4) kernel/locking/lockdep.c:5756 (discriminator 4)) [ 293.044620][ C0] ? remove_entity_load_avg (kernel/sched/fair.c:4808) [ 293.045079][ C0] ? find_held_lock (kernel/locking/lockdep.c:5244 (discriminator 1)) [ 293.045518][ C0] ? __lock_release+0x103/0x450 [ 293.045998][ C0] ? finish_task_switch+0x5ce/0xae0 [ 293.046465][ C0] ? lockdep_tasklist_lock_is_held (kernel/fork.c:345) [ 293.046974][ C0] __virt_addr_valid (include/linux/rcupdate.h:874 include/linux/mmzone.h:2019 arch/x86/mm/physaddr.c:65) [ 293.047391][ C0] ? __virt_addr_valid (include/linux/rcupdate.h:329 (discriminator 1) include/linux/rcupdate.h:873 (discriminator 1) include/linux/mmzone.h:2019 (discriminator 1) arch/x86/mm/physaddr.c:65 (discriminator 1)) [ 293.047829][ C0] kasan_addr_to_slab (mm/kasan/common.c:37 (discriminator 1)) [ 293.048247][ C0] __kasan_record_aux_stack (mm/kasan/generic.c:531 (discriminator 1)) [ 293.048738][ C0] __call_rcu_common+0x6b/0x6a0 [ 293.049245][ C0] put_task_stack (kernel/fork.c:371 kernel/fork.c:571 kernel/fork.c:578) [ 293.049646][ C0] finish_task_switch+0x5d6/0xae0 [ 293.050136][ C0] __schedule (kernel/sched/core.c:6617) [ 293.050531][ C0] ? io_schedule_timeout (kernel/sched/core.c:6617) [ 293.050975][ C0] ? reacquire_held_locks (kernel/locking/lockdep.c:5405) [ 293.051450][ C0] ? schedule (kernel/sched/core.c:6804 (discriminator 1) kernel/sched/core.c:6837 (discriminator 1)) [ 293.051820][ C0] schedule (arch/x86/include/asm/preempt.h:84 (discriminator 13) kernel/sched/core.c:6824 (discriminator 13) kernel/sched/core.c:6838 (discriminator 13)) [ 293.052184][ C0] smpboot_thread_fn (kernel/smpboot.c:160) [ 293.052638][ C0] ? schedule (arch/x86/include/asm/preempt.h:84 (discriminator 13) kernel/sched/core.c:6824 (discriminator 13) kernel/sched/core.c:6838 (discriminator 13)) [ 293.052993][ C0] ? sort_range (kernel/smpboot.c:107) [ 293.053361][ C0] kthread (kernel/kthread.c:388) [ 293.053744][ C0] ? kthread_complete_and_exit (kernel/kthread.c:341) [ 293.054220][ C0] ret_from_fork (arch/x86/kernel/process.c:153) [ 293.054592][ C0] ? kthread_complete_and_exit (kernel/kthread.c:341) [ 293.055091][ C0] ret_from_fork_asm (arch/x86/entry/entry_64.S:256) [ 293.055556][ C0] </TASK> The kernel config and materials to reproduce are available at: https://download.01.org/0day-ci/archive/20240416/202404161239.4aa01f2-lkp@xxxxxxxxx -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki