CVE-2026-99028 in Linux
Sumário
de VulDB • 23/10/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
net: xilinx: axienet: Libera os buffers DMA pendentes na parada do dmaengine
No caminho do dmaengine, o driver pré-submete buffers de RX e mantém buffers de TX em trânsito cujos SKBs são mapeados via DMA pelo driver e liberados apenas nos callbacks de conclusão. Em ndo_stop(), a chamada dmaengine_terminate_sync() aborta esses descritores sem executar seus callbacks, fazendo com que o driver libere apenas as estruturas (shells) do anel, vazando cada SKB ainda possuído pelo motor e seu mapeamento DMA em cada desativação da interface. Com 128 buffers de RX pré-postados por canal, o vazamento de mapeamento pode eventualmente esgotar uma janela IOMMU limitada.
Limpe o skb do slot nos callbacks TX e RX para que um skb não nulo marque um slot que ainda possui um buffer ativo com mapeamento DMA; na parada, desfaça o mapeamento e libere cada um desses buffers.
axienet_dma_rx_cb() é executado a partir da tasklet de DMA e rearma o anel RX em cada conclusão, podendo ocorrer uma condição de corrida (race) com axienet_stop(): uma conclusão pode submeter um buffer fresco após dmaengine_terminate_sync() ter retornado, deixando o canal armado com um buffer que a rotina de desmontagem então libera enquanto o motor ainda pode escrever nele (dma_release_channel() também não interrompe essa operação). Adicione um bloqueio (lock) que axienet_dma_rx_cb() mantém durante a verificação @stopping e a resubmissão, e que axienet_stop() utiliza para definir @stopping antes de encerrar. Uma vez que @stopping esteja definido, nenhum callback pode armar um novo buffer, e qualquer um armado logo antes é abortado pelo término da operação, fazendo com que a desmontagem libere apenas buffers que o motor já não possui mais.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.