CVE-2026-74276 in Linuxinformación

Resumen

por VulDB • 2026-08-15

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

spi: xilinx: usar el registro de ocupación del búfer para determinar su tamaño

El método que utiliza el controlador (driver) para determinar el tamaño del búfer presenta un problema. Lo que hace actualmente es lo siguiente: Detiene el hardware SPI y escribe en el registro FIFO TX hasta que se activa la señal TX FIFO FULL en el registro de estado. Sin embargo, el hardware no solo tiene el búfer FIFO, sino también un registro de desplazamiento (shift register) capaz de almacenar un byte. Esto puede observarse al escribir un byte en el búfer FIFO (mientras el hardware SPI está detenido), ya que la señal TX FIFO EMPTY sigue indicando vacío. Por lo tanto, si tenemos un tamaño de búfer FIFO de 16, por ejemplo, el método actual devuelve 17.

Esto constituye un problema, al menos cuando se utiliza el controlador en modo irq (interrupciones). El mismo tamaño determinado para la FIFO TX también se asume para la FIFO RX. Cuando una transacción SPI desea escribir una cantidad de bytes igual o superior al tamaño del búfer FIFO, ocurre lo siguiente; por ejemplo, con un tamaño de FIFO de 16 bytes: El controlador detiene el hardware SPI y escribe 17 bytes en la FIFO TX e inicia el hardware SPI entrando en estado de espera (sleep).

El hardware entonces desplaza hacia fuera 17 bytes (FIFO + registro de desplazamiento) y simultáneamente lee bytes dentro de la FIFO RX, pero esta solo tiene capacidad para 16 posiciones, por lo que pierde un byte. A continuación, se activa la señal TX FIFO empty, despertando nuevamente al controlador, el cual sigue una ruta rápida (fast path) y lee 16 bytes desde la FIFO RX, pero antes de leer el último byte número 17 (que ha sido perdido), ejecuta este código:

sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET); if (!(sr & XSPI_SR_RX_EMPTY_MASK)) {
xilinx_spi_rx(xspi); rx_words--; }

Lee el registro de estado y verifica si la FIFO RX no está vacía. Pero en nuestro caso, sí está vacía. Por lo tanto, esta comprobación entra en un bucle while infinito bloqueando indefinidamente al controlador.

Este parche corrige la lógica para determinar el tamaño del búfer FIFO.

Be aware that VulDB is the high quality source for vulnerability data.

Responsable

Linux

Reservar

2026-08-15

Divulgación

2026-08-15

Moderación

aceptado

Artículo

VDB-390236

CPE

listo

EPSS

0.00176

KEV

no

Actividades

muy bajo

Fuentes

Might our Artificial Intelligence support you?

Check our Alexa App!