CVE-2026-80916 in LinuxИнформация

Сводка

по VulDB • 09.09.2026

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

kcov: исправление повреждения данных и условий гонности на PREEMPT_RT

syzbot сообщает о повреждении состояния KCOV в ядрах с поддержкой PREEMPT_RT, поскольку временное хранилище, используемое для сохранения/восстановления удаленного состояния KCOV, в настоящее время выделяется как область per-CPU.

В ядрах с поддержкой PREEMPT RT обработчики softirq выполняются как предварительно отключаемые потоки задач (например, ksoftirqd). Если контекст softirq вытесняет задачу, выполняющую удаленную сессию KCOV, он безопасно сохраняет состояние задачи в область per-CPU. Однако, если этот поток softirq впоследствии будет вытеснен более приоритетным потоком softirq на том же процессоре, второй обработчик softirq перезапишет ту же самую область per-CPU, навсегда уничтожив исходное состояние KCOV этой задачи.

Исправьте это повреждение данных, переместив временное хранилище из области per-CPU в область per-thread (на поток). Поскольку каждый поток softirq теперь владеет своим собственным контекстом задачи, вложенная вытесненность soft больше не приводит к перезаписи данных.

Обратите внимание, что хотя временное хранилизование теперь находится на уровне потока, блокировка kcov_percpu_data.lock должна быть сохранена для области per-CPU, поскольку нам необходимо обеспечить атомарную работу функций kcov_remote_start() и kcov_remote_stop() без условий гонности с асинхронными прерываниями, которые манипулируют состоянием KCOV текущей задачи.

Вероятно, выделение памяти GFP_KERNEL через vmalloc_node() в функции kcov_init() уже вызвало panic() до возврата NULL, так как не будет процессов пользовательского пространства, подлежащих убийству из-за нехватки памяти (OOM), когда выполняется функция __init встроенного модуля. Однако этот патч также исправляет аварийное завершение работы ядра при возврате NULL функцией vmalloc_node() в kcov_init(), поскольку kcov_init() оставляла per-CPU irq_area == NULL, но kcov_remote_start() зависит от условия per-CPU irq_area != NULL, что приводит к следующим проблемам:

(1) вызову vmalloc() в kcov_remote_start() несмотря на контекст !in_task(); (2) обращению за пределами массива, если пункт (1) выполнен успешно, но kcov->remote_size < CONFIG_KCOV_IRQ_AREA_SIZE; (3) постоянной утечке памяти, выделенной в пункте (1), что в конечном итоге приводит к исчерпанию ресурсов и убийству всех процессов пользовательского пространства, подлежащих OOM-kill.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

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

Linux

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

26.08.2026

Раскрытие

09.09.2026

Модерация

принято

Вход

VDB-401819

EPSS

0.00000

KEV

Нет

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

Очень низкий

Источники

Do you know our Splunk app?

Download it now for free!