CVE-2026-74276 in Linux
Sumário
de VulDB • 15/08/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
spi: xilinx: usar o registrador de ocupação da FIFO para determinar o tamanho do buffer
O método que o driver usa para determinar o tamanho da FIFO apresenta um problema. O comportamento atual é o seguinte: ele interrompe o hardware SPI e escreve no registrador TX FIFO até que a sinalização TX FIFO FULL seja ativada no registrador de status. No entanto, o hardware não possui apenas uma FIFO; também tem um registrador de deslocamento (shift register) capaz de armazenar um byte. Isso pode ser observado ao escrever um byte na FIFO (enquanto o hardware SPI está interrompido), pois a sinalização TX FIFO EMPTY ainda permanece ativa. Portanto, se tivermos um tamanho de FIFO de 16, por exemplo, o método atual retorna 17.
Isso representa um problema, pelo menos quando o driver é utilizado no modo irq. O mesmo tamanho determinado para a TX FIFO também é assumido para a RX FIFO. Quando uma transação SPI deseja escrever uma quantidade igual ou superior ao tamanho da FIFO em bytes, ocorre o seguinte exemplo com um tamanho de FIFO de 16 bytes:
O driver interrompe o hardware SPI e escreve 17 bytes na TX FIFO, inicia o hardware SPI e entra em estado de suspensão (sleep). Em seguida, o hardware desloca para fora 17 bytes (FIFO + registrador de deslocamento) e simultaneamente lê bytes na RX FIFO; porém, como esta só possui 16 posições, um byte é perdido. Em seguida, a sinalização TX FIFO empty é ativada, acordando novamente o driver, que segue pelo caminho rápido (fast path) e lê 16 bytes da RX FIFO, mas antes de ler o último byte (o décimo sétimo, que foi perdido), executa:
sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET); if (!(sr & XSPI_SR_RX_EMPTY_MASK)) {
xilinx_spi_rx(xspi); rx_words--; }
Ele lê o registrador de status e verifica se a RX FIFO não está vazia. No entanto, neste caso, ela está vazia. Assim, essa verificação entra em um loop infinito (spin), bloqueando permanentemente o driver.
Este patch corrige a lógica para determinar o tamanho da FIFO.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.