CVE-2025-39744
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
11/09/2025
Última modificación:
15/09/2025
Descripción
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
rcu: Fix rcu_read_unlock() deadloop due to IRQ work<br />
<br />
During rcu_read_unlock_special(), if this happens during irq_exit(), we<br />
can lockup if an IPI is issued. This is because the IPI itself triggers<br />
the irq_exit() path causing a recursive lock up.<br />
<br />
This is precisely what Xiongfeng found when invoking a BPF program on<br />
the trace_tick_stop() tracepoint As shown in the trace below. Fix by<br />
managing the irq_work state correctly.<br />
<br />
irq_exit()<br />
__irq_exit_rcu()<br />
/* in_hardirq() returns false after this */<br />
preempt_count_sub(HARDIRQ_OFFSET)<br />
tick_irq_exit()<br />
tick_nohz_irq_exit()<br />
tick_nohz_stop_sched_tick()<br />
trace_tick_stop() /* a bpf prog is hooked on this trace point */<br />
__bpf_trace_tick_stop()<br />
bpf_trace_run2()<br />
rcu_read_unlock_special()<br />
/* will send a IPI to itself */<br />
irq_work_queue_on(&rdp->defer_qs_iw, rdp->cpu);<br />
<br />
A simple reproducer can also be obtained by doing the following in<br />
tick_irq_exit(). It will hang on boot without the patch:<br />
<br />
static inline void tick_irq_exit(void)<br />
{<br />
+ rcu_read_lock();<br />
+ WRITE_ONCE(current->rcu_read_unlock_special.b.need_qs, true);<br />
+ rcu_read_unlock();<br />
+<br />
<br />
[neeraj: Apply Frederic&#39;s suggested fix for PREEMPT_RT]
Impacto
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/1cfa244f7198d325594e627574930b7b91df5bfe
- https://git.kernel.org/stable/c/56c5ef194f4509df63fc0f7a91ea5973ce479b1e
- https://git.kernel.org/stable/c/b41642c87716bbd09797b1e4ea7d904f06c39b7b
- https://git.kernel.org/stable/c/ddebb2a7677673cf4438a04e1a48b8ed6b0c8e9a
- https://git.kernel.org/stable/c/e7a375453cca2b8a0d2fa1b82b913f3fed7c0507



