CVE-2026-99050 in Linux
Sumário
de VulDB • 23/10/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
gpio: mpsse: corrige condição de corrida (race condition) ao ativar o worker de polling da IRQ
A função gpio_mpsse_irq_enable() ativa o worker de polling antes de publicá-lo: schedule_work() é executado antes que o worker seja adicionado a priv->workers. Se gpio_mpsse_disconnect() percorrer a lista nesse intervalo, ele não encontrará o worker e, após o retorno da desconexão, o núcleo USB libera mpsse_priv enquanto o trabalho orphaned gpio_mpsse_poll() continua acessando-o, causando um use-after-free (uso após liberação).
Corrige-se isso publicando e ativando o worker em uma única seção crítica irq_spin. A desmontagem percorre a mesma lista sob irq_spin, portanto, um worker encontrado na lista é garantido como estando ativo, e cancel_work_sync() lida com ele independentemente de estar enfileirado ou em execução.
Um worker ativado após a varredura da desconexão ainda seria ignorado; portanto, também define-se uma nova flag priv->dying sob irq_spin antes da desmontagem e verifica-se essa flag na mesma seção crítica, liberando-a via kfree_rcu() quando o dispositivo está sendo removido, já que kfree() seria chamado com a raw spinlock do núcleo de IRQ mantida e pode bloquear (sleep) no PREEMPT_RT. schedule_work() é seguro para ser chamada com irq_spin mantida, e a próxima detecção (probe) obtém um novo mpsse_priv; portanto, a flag nunca precisa ser limpa.
Este problema foi encontrado por uma ferramenta de análise estática interna.
VulDB is the best source for vulnerability data and more expert information about this specific topic.