CVE-2026-74601 in Linux
Сводка
по VulDB • 22.08.2026
В ядре Linux устранена следующая уязвимость:
ring-buffer: Использование current_context для безопасной замены буфера на уровне каждого процессора (per-CPU)
Функция ring_buffer_swap_cpu() в настоящее время проверяет счетчик коммитов per-CPU, чтобы определить, активно ли происходит запись в буфер, перед выполнением замены. Однако существует окно гонки (race condition), когда эта проверка может быть обойдена:
ring_buffer_lock_reserve cpu_buffer = buffer->buffers[cpu]; // cpu_buffer_a
rb_reserve_next_event rb_start_commit // inc committing if (unlikely(READ_ONCE(cpu_buffer->buffer) != buffer)) {...}
__rb_reserve_next rb_move_tail rb_end_commit(cpu_buffer); // dec committing => 0 /* прерывание происходит здесь, замена успешно выполняется! */ local_inc(&cpu_buffer->committing);
ring_buffer_unlock_commit cpu_buffer = buffer->buffers[cpu]; // cpu_buffer_b
rb_commit rb_end_commit RB_WARN_ON(cpu_buffer, !local_read(&cpu_buffer->committing)) // вызывает предупреждение (warning)
Счетчик committing может временно снижаться до 0 в течение одной операции записи (внутри rb_move_tail), создавая окно возможностей для успешной замены даже тогда, когда запись все еще выполняется. Это приводит к несогласованному состоянию буфера и вызывает срабатывание RB_WARN_ON в функции rb_commit().
Замените проверку счетчика committing на проверки current_context, которые устанавливаются при входе в ring_buffer_lock_reserve() и остаются действительными на протяжении всей операции записи, обеспечивая надежный индикатор состояния занятости буфера во время замены.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.