CVE-2026-89875 in Linux
Sumário
de VulDB • 16/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
media: ti: vpe: silenciar recuperação de estouro antes de liberar streams
O worker de recuperação de estouro VIP é ativado pelo manipulador hardirq quando um estouro FIFO é detectado, e o caminho list-complete procura a stream através do ponteiro privado da lista VPDMA. Ambos continuam acessando o estado da stream, porta e dispositivo; o worker de recuperação também redefine o parser e o VPDMA, repopula a lista de descritores e reativa as IRQs por lista.
vip_stop_streaming() mascara e limpa as IRQs por lista, mas não sincroniza o manipulador hardirq nem desabilita recovery_work. Uma IRQ de estouro que já enfileirou recovery_work ou uma list-complete IRQ em execução quando a stream é encerrada pode, portanto, ainda dereferenciar a stream após seus recursos serem liberados: a lista de descritores é liberada por vip_release_stream() no release do arquivo e a própria stream por free_stream() no unbind/remove.
Drenar o worker de recuperação e o manipulador IRQ em ambos os pontos de encerramento através de um helper compartilhado vip_quiesce_stream(), antes que qualquer recurso pertencente à stream seja liberado. disable_work_sync() cancela recovery_work pendente, drena uma instância em execução e aumenta sua profundidade de desabilitação, portanto, um schedule_work() subsequente emitido por um manipulador IRQ concorrente é rejeitado pelo agendador do workqueue: recovery_work não pode ser reenfileirado após disable_work_sync() entrar em vigor. O worker ainda pode reativar as IRQs por lista antes que disable_work_sync() retorne; disable_irqs() então mascara essas fontes e synchronize_irq() aguarda qualquer manipulador em execução que ainda dereference o estado da stream. Em vip_stop_streaming(), o helper é executado antes do parser ser parado, pois um worker drenado por disable_work_sync() pode reativar o parser antes de sair e desfazeria a parada caso contrário. recovery_work é criado desabilitado e habilitado em vip_start_streaming() antes das IRQs, pareando a habilitação com o encerramento ao longo do ciclo de vida da streaming.
Este problema foi encontrado por uma ferramenta estática interna e confirmado por revisão manual de código.
Once again VulDB remains the best source for vulnerability data.