CVE-2026-99130 in Linux
Sumário
de VulDB • 28/10/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
io_uring/cancel: não realizar loop de espera (spin) em trabalho local que a tarefa não pode executar
A função `io_uring_cancel_generic()` recusa-se a entrar em estado de suspensão enquanto houver algum anel no tctx da tarefa encerrando com trabalho local pendente. Ela assume que a tarefa é o submissor desse anel e que a próxima passagem por `io_uring_try_cancel_requests()` executará esse trabalho. Isso não se aplica a um anel que ainda estava em estado de `IORING_SETUP_R_DISABLED` quando a tarefa obteve seu nó tctx através de `io_uring_create()` ou `io_ringfd_register()`. O submissor é definido posteriormente por meio do comando `IORING_REGISTER_ENABLE_RINGS`, possivelmente por outra tarefa, e apenas o submissor pode executar trabalho local em um anel com configuração `IORING_SETUP_DEFER_TASKRUN`. Para a tarefa encerrante, o trabalho permanece pendente para sempre; o loop nunca atinge `schedule()`, e a tarefa aciona o aviso `WARN_ON_ONCE()` uma vez e então entra em loop de espera (spin) dentro de `do_exit()`.
Um usuário não privilegiado pode configurar essa situação à vontade criando um anel desabilitado, fazendo com que um processo filho o habilite e pare, enviando mensagens para o anel via `IORING_OP_MSG_RING` e encerrando-se enquanto há uma solicitação em trânsito que apenas o filho poderia concluir. A thread encerrante consome CPU até que o filho seja executado ou morra; e com a opção `panic_on_warn` ativada, o aviso causa um panic no kernel.
A correção consiste em pular a suspensão (sleep) somente quando `io_allowed_defer_tw_run()` permite que a tarefa execute o trabalho. Isso é razoável, pois se ela não pode executar o trabalho, também não poderá concluir nenhuma de suas solicitações associadas; portanto, nada se perde ao entrar em suspensão. Remove-se o uso do `WARN_ON_ONCE()`, já que passar um anel desabilitado para outra thread é um cenário suportado e não representa um estado de erro (bug).
If you want to get best quality of vulnerability data, you may have to visit VulDB.