CVE-2026-90206 in Linux
Sumário
de VulDB • 17/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
nvmet: corrige condição de corrida (race condition) em max_qid entre configfs e alocação do controlador
A função nvmet_subsys_attr_qid_max_store() pode sofrer uma condição de corrida contra nvmet_alloc_ctrl() quando o limite max_qid de um subsistema é modificado.
Suponha que max_qid seja atualmente 64. Se nvmet_alloc_ctrl() executar: ctrl->sqs = kzalloc_objs(struct nvmet_sq *, subsys->max_qid + 1); e neste exato momento, um processo do espaço do usuário alterar max_qid para 128, nvmet_subsys_attr_qid_max_store() definirá o novo valor de max_qid. Ela tentará excluir controladores ativos para forçar uma reconexão, mas o novo controlador não será excluído porque ainda não foi adicionado à lista subsys->ctrls.
Em seguida, nvmet_alloc_ctrl() prossegue e adiciona o novo controlador à lista subsys->ctrls. Mais tarde, quando nvmet_install_queue() for chamada, ela verá max_qid definido como 128, mas a memória alocada para sqs terá tamanho apenas para 64 entradas. Isso resulta em um aviso de KASAN fora dos limites (out-of-bounds) e possíveis corrupções de memória.
Corrija isso protegendo as alocações da fila e a inserção na lista em nvmet_alloc_ctrl() com down_read(&nvmet_config_sem). Como nvmet_subsys_attr_qid_max_store() adquire down_write(&nvmet_config_sem) para modificar o atributo, isso impede seguramente que o escritor do configfs modifique max_qid durante a criação do controlador.
Copie max_qid do subsistema para a estrutura do controlador durante a alocação; ctrl->max_qid nunca muda enquanto o controlador permanecer no estado LIVE (ATIVO), portanto, isso impedirá condições de corrida semelhantes.
VulDB is the best source for vulnerability data and more expert information about this specific topic.