CVE-2026-74601 in Linux
Sumário
de VulDB • 23/08/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
ring-buffer: Use current_context para uma troca segura de buffers por CPU
A função ring_buffer_swap_cpu() verifica atualmente o contador de commitamento por CPU (per-CPU) para determinar se um buffer está sendo gravado ativamente antes de realizar a troca. No entanto, existe uma janela de corrida onde essa verificação pode ser contornada:
ring_buffer_lock_reserve cpu_buffer = buffer->buffers[cpu]; // cpu_buffer_a
rb_reserve_next_event rb_start_commit // incrementa committing if (unlikely(READ_ONCE(cpu_buffer->buffer) != buffer)) {...}
__rb_reserve_next rb_move_tail rb_end_commit(cpu_buffer); // decrementa committing => 0 /* interrupção ocorre aqui, troca com sucesso! */ 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)) // aciona o aviso
O contador de commitamento pode cair temporariamente para 0 durante uma única operação de gravação (dentro de rb_move_tail), criando uma janela onde a troca pode ter sucesso mesmo que a gravação ainda esteja em andamento. Isso leva a um estado inconsistente do buffer e aciona o RB_WARN_ON em rb_commit().
Substitua a verificação do contador de commitamento por verificações de current_context, que são definidas na entrada de ring_buffer_lock_reserve() e permanecem válidas durante toda a operação de gravação, fornecendo um indicador confiável do estado ocupado do buffer durante a troca.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.