Dear Maintainers,

When using our customized Syzkaller to fuzz the latest Linux kernel, the 
following crash was triggered.

HEAD commit: 7d0a66e4bb9081d75c82ec4957c50034cb0ea449 
git tree: upstream 
Output: https://github.com/manual0/crash/blob/main/report2.txt 
Kernel config: https://github.com/manual0/crash/blob/main/config.txt 
C reproducer: https://github.com/manual0/crash/blob/main/repro2.c 
Syz reproducer: https://github.com/manual0/crash/blob/main/repro2.syz

Brief Introduction: The kernel reports an RCU CPU stall (rcu_preempt detected 
stalls). The rcu_preempt kthread was starved for 10,498 jiffies, which usually 
leads to an expected OOM.

The NMI backtrace shows CPU 3 is spinning in the lockdep/locking code while 
attempting to cancel an hrtimer during a timer softirq. The call path 
originates from drm_vblank_disable_and_save and reaches 
hrtimer_cancel_wait_running. This suggests a potential deadlock or an 
excessively long critical section in the DRM vblank/timer handling path that 
prevents the RCU grace-period kthread from being scheduled on that CPU.

If you fix this issue, please add the following tag to the commit:
Reported-by: Zhi Wang <[email protected]>, Bin Yu<[email protected]>, 
MingYu Wang<[email protected]>, WenJian Lu<[email protected]>, KeFeng 
Gao<[email protected]>

Relevant Log: 
rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
rcu:    (detected by 0, t=10502 jiffies, g=64625, q=212 ncpus=4)
rcu: All QSes seen, last rcu_preempt kthread activity 10498 
(4295006777-4294996279), jiffies_till_next_fqs=1, root ->qsmask 0x0
rcu: rcu_preempt kthread timer wakeup didn't happen for 10497 jiffies! g64625 
f0x2 RCU_GP_WAIT_FQS(5) ->state=0x200
rcu:    Possible timer handling issue on cpu=3 timer-softirq=24641
rcu: rcu_preempt kthread starved for 10498 jiffies! g64625 f0x2 
RCU_GP_WAIT_FQS(5) ->state=0x200 ->cpu=3
rcu:    Unless rcu_preempt kthread gets sufficient CPU time, OOM is now 
expected behavior.
rcu: RCU grace-period kthread stack dump:
task:rcu_preempt     state:R stack:28920 pid:16    tgid:16    ppid:2      
task_flags:0x208040 flags:0x00080000
Call Trace:
 <TASK>
 sched_info_arrive home/linux-6.18/kernel/sched/stats.h:267 [inline]
 sched_info_switch home/linux-6.18/kernel/sched/stats.h:330 [inline]
 prepare_task_switch home/linux-6.18/kernel/sched/core.c:5122 [inline]
 context_switch home/inux-6.18/kernel/sched/core.c:5272 [inline]
 __schedule+0x1044/0x5bb0 home/linux-6.18/kernel/sched/core.c:6929
 __schedule_loop home/linux-6.18/kernel/sched/core.c:7011 [inline]
 schedule+0xe7/0x3a0 home/linux-6.18/kernel/sched/core.c:7026
 schedule_timeout+0x113/0x280 home/linux-6.18/kernel/time/sleep_timeout.c:98
 rcu_gp_fqs_check_wake home/linux-6.18/kernel/rcu/tree.c:2007 [inline]
 rcu_gp_fqs_loop+0x18c/0xa00 home/linux-6.18/kernel/rcu/tree.c:2083
 rcu_gp_kthread+0x26f/0x370 home/linux-6.18/kernel/rcu/tree.c:2280
 kthread+0x3d0/0x780 home/linux-6.18/kernel/kthread.c:463
 ret_from_fork+0x676/0x7d0 home/linux-6.18/arch/x86/kernel/process.c:195
 ret_from_fork_asm+0x1a/0x30 home/linux-6.18/arch/x86/entry/entry_64.S:245
 </TASK>

Thanks, 
Zhi Wang

Reply via email to