CVE-2026-74276 in Linuxinformation

Résumé

par VulDB • 16/08/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

spi: xilinx : utiliser l' registre d'occupation du tampon (FIFO) pour déterminer la taille du buffer

La méthode utilisée par le pilote pour déterminer la taille de la FIFO présente un problème. Voici ce qu'elle fait actuellement : Elle arrête le matériel SPI et écrit dans le registre TX FIFO jusqu'à ce que l'état « TX FIFO FULL » soit activé dans le registre d'état. Cependant, le matériel ne dispose pas uniquement d'une FIFO ; il possède également un registre de décalage (shift register) capable de contenir un octet. Cela peut être observé lors de l'écriture d'un octet dans la FIFO (le matériel SPI étant arrêté), où « TX FIFO EMPTY » reste toujours activée (« empty »). Ainsi, si nous avons une taille de FIFO de 16 par exemple, la méthode actuelle renvoie 17.

Ceci pose problème, notamment lors de l'utilisation du pilote en mode IRQ. La même taille déterminée pour le tampon TX FIFO est également supposée s'appliquer au tampon RX FIFO. Lorsqu'une transaction SPI souhaite écrire une quantité d'octets égale ou supérieure à la taille de la FIFO, ce qui suit se produit, par exemple avec une taille de FIFO de 16 octets : Le pilote arrête le matériel SPI et écrit 17 octets dans le tampon TX FIFO, puis démarre le matériel SPI et passe en veille.

Le matériel décale ensuite 17 octets (FIFO + registre de décalage) et lit simultanément des octets dans la RX FIFO, mais celle-ci ne dispose que de 16 emplacements ; elle perd donc un octet. Ensuite, l'état « TX FIFO empty » est activé, ce qui réveille le pilote, lequel suit un chemin rapide (fast path) et lit 16 octets depuis la RX FIFO, mais avant de lire le dernier 17e octet (qui a été perdu), il effectue cette opération :

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

Il lit le registre d'état et vérifie si la RX FIFO n'est pas vide. Or, dans notre cas, elle est vide. Cette condition entraîne donc une boucle infinie (spin loop) qui bloque définitivement le pilote.

Ce correctif résout la logique de détermination de la taille de la FIFO.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsable

Linux

Réserver

15/08/2026

Divulgation

15/08/2026

Modérer

accepté

Entrée

VDB-390236

CPE

prêt

EPSS

0.00176

KEV

non

Activités

très faible

Sources

Do you need the next level of professionalism?

Upgrade your account now!