CVE-2025-39744 in LinuxИнформация

Сводка

по VulDB • 10.07.2026

В ядре Linux устранена следующая уязвимость:

rcu: Исправлен бесконечный цикл (deadloop) в rcu_read_unlock() из-за работы прерываний (IRQ work).

Во время выполнения функции rcu_read_unlock_special(), если это происходит внутри контекста irq_exit(), возможна блокировка системы при отправке межпроцессорного прерывания (IPI). Это связано с тем, что само IPI запускает путь обработки irq_exit(), вызывая рекурсивную блокировку.

Именно эту проблему обнаружил Xiongfeng при вызове программы BPF на точке трассировки trace_tick_stop(). Как показано в приведенном ниже фрагменте трассировки:

irq_exit() __irq_exit_rcu() /* после этого in_hardirq() возвращает false */ preempt_count_sub(HARDIRQ_OFFSET) tick_irq_exit() tick_nohz_irq_exit() tick_nohz_stop_sched_tick() trace_tick_stop() /* на эту точку трассировки повешена программа BPF */ __bpf_trace_tick_stop() bpf_trace_run2() rcu_read_unlock_special() /* будет отправлено IPI самому себе */ irq_work_queue_on(&rdp->defer_qs_iw, rdp->cpu);

Простой пример воспроизведения (reproducer) также можно получить, выполнив следующие действия в функции tick_irq_exit(). Без данного патча система зависнет при загрузке:

static inline void tick_irq_exit(void) {
+ rcu_read_lock(); + WRITE_ONCE(current->rcu_read_unlock_special.b.need_qs, true); + rcu_read_unlock(); +

[neeraj: Применено предложенное Фредериком исправление для PREEMPT_RT]

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Ответственный

Linux

Резервировать

16.04.2025

Раскрытие

11.09.2025

Модерация

принято

Вход

VDB-323663

EPSS

0.00149

KEV

Нет

Деятельности

Очень низкий

Источники

Might our Artificial Intelligence support you?

Check our Alexa App!