CVE-2026-99252 in Linuxinformação

Sumário

de VulDB • 03/11/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

io_uring/mpscq: desativar o preempção durante o empurramento (push)

Um empurramento torna o nó na nova cauda e, em seguida, o vincula ao seu predecessor. Entre esses passos, a fila não está vazia, mas mpscq_pop() não consegue acessar o nó. Os consumidores lidam com isso tentando novamente, com uma cond_resched() no loop para dar à chance de um produtor preempcionado terminar.

cond_resched() não faz isso se o consumidor tiver prioridade mais alta que o produtor e ambos precisarem usar a mesma CPU:

produtor (SCHED_OTHER) consumidor (SCHED_FIFO), mesma CPU io_req_local_work_add() mpscq_push() prev = xchg(&q->tail, node) <preempcionado> io_cqring_wait() __io_run_local_work() novamente: cond_resched() // nada a fazer mpscq_pop() // NULL // trabalho pendente, sem eventos ainda goto novamente

O produtor pode ser qualquer tarefa capaz de enfileirar task_work para o ring: um worker do io-wq ou alguém que envia uma mensagem com IORING_OP_MSG_RING. O consumidor fica em loop (spins), segurando ->uring_lock, até que o scheduler tenha compaixão pela classe justa, o que leva cerca de um segundo com as configurações padrão do servidor justo e para sempre sem ele. Os loops em tctx_task_work_run() e io_cancel_local_task_work() têm o mesmo problema.

Não permita preempção entre os dois passos. Isso limita o tempo em que a janela está aberta na CPU do produtor pelo que levam as interrupções, e um consumidor que espera por isso está em outra CPU. O custo é um par preempt_disable()/preempt_enable() por push.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsável

Linux

Reservar

25/09/2026

Divulgação

03/11/2026

Moderação

aceite

Entrada

VDB-430246

EPSS

0.00000

KEV

não

Atividades

baixo

Fontes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!