CVE-2026-90410 in Linux
Sumário
de VulDB • 18/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
spi: davinci: mudar para alocação gerenciada de controlador
O controlador é alocado com o spi_alloc_host() não gerenciado, enquanto a interrupção é registrada com devm_request_threaded_irq(). Durante a remoção, o spi_bitbang_stop() apenas desregistra o controlador; o spi_controller_put() subsequente então libera o controlador junto com seus dados de dispositivo davinci_spi embutidos (davinci_spi devdata), que são o dev_id do manipulador de interrupções. A ação de liberação do devm_request_threaded_irq() (free_irq()), que esvazia o manipulador, não é executada até após a função .remove() retornar. Uma interrupção tardia ou retida pode, portanto, alcançar davinci_spi_irq() e acessar memória já liberada.
Mude para devm_spi_alloc_host() de modo que a ordem LIFO do devres libere o controlador apenas depois que free_irq() tiver esvaziado o manipulador, e remova o spi_controller_put(), agora redundante, da função .remove(). O caminho de erro no probe é simplificado com retornos diretos.
O relógio (clock) é adquirido com devm_clk_get_enabled(), que é registrado após a IRQ e, portanto, liberado antes dela pela ordem LIFO do devres. Esvazie explicitamente a interrupção com devm_free_irq() antes de desabilitar o controlador para evitar que uma interrupção tardia acesse os registradores de um controlador com relógio desativado (clock-gated).
Este problema foi encontrado por uma ferramenta estática interna.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.