Ad

CVE-2026-89566

NONE EPSS 0.21%
Обновлено 11 сентября 2026
Checkpoint
Параметр Значение
Поставщик Checkpoint
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: jbd2: проверьте потребность_resched() при пропуске занятых буферов контрольных точек Journal_shrink_one_cp_list() пропускает занятые буферы контрольных точек при вызове с JBD2_SHRINK_BUSY_SKIP. Оператор continue на этом пути также пропускает проверку Need_resched() в конце тела цикла. Следовательно, когда список контрольных точек содержит в основном занятые буферы, Сжиматель может пройти весь список, удерживая журнал->j_list_lock, даже если был запрошен перенос даты.

Большие списки контрольных точек под Таким образом, нехватка памяти может привести к длительному времени удержания блокировки и оставить другие Процессоры вращаются при j_list_lock, что приводит к мягким зависаниям или зависаниям RCU. Направьте путь занятого буфера через проверку Need_resched() так, чтобы Сжиматель может освободить j_list_lock и быстро перенести расписание, восстановив четность с путем очистки буфера, который уже проверяет метод Need_resched(). Это не меняет того, какие буферы контрольных точек подлежат удалению.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: jbd2: check need_resched() when skipping busy checkpoint buffers journal_shrink_one_cp_list() skips busy checkpoint buffers when called with JBD2_SHRINK_BUSY_SKIP. The continue statement on this path also skips the need_resched() check at the end of the loop body. Consequently, when a checkpoint list contains mostly busy buffers, the shrinker can walk the entire list while holding journal->j_list_lock, even when a reschedule has been requested. Large checkpoint lists under memory pressure can therefore cause long lock hold times and leave other CPUs spinning on j_list_lock, resulting in soft lockups or RCU stalls. Route the busy-buffer path through the need_resched() check so that the shrinker can release j_list_lock and reschedule promptly, restoring parity with the clean-buffer path, which already checks need_resched(). This does not change which checkpoint buffers are eligible for removal.