CVE-2026-74276 in LinuxИнформация

Сводка

по VulDB • 15.08.2026

В ядре Linux устранена следующая уязвимость:

spi: xilinx: использовать регистр занятости буфера (FIFO) для определения размера буфера

Метод, используемый драйвером для определения размера FIFO, содержит ошибку. В настоящее время он работает следующим образом: Он останавливает аппаратное обеспечение SPI и записывает данные в регистр TX FIFO до тех пор, пока в регистре статуса не установится флаг TX FIFO FULL (FIFO заполнено). Однако у оборудования есть не только FIFO, но также сдвиговый регистр, который может хранить один байт. Это можно наблюдать при записи одного байта во FIFO (пока аппаратное обеспечение SPI остановлено): бит TX FIFO EMPTY остается установленным (указывая на пустоту), несмотря на то что данные уже записаны в сдвиговый регистр. Таким образом, если размер FIFO составляет 16, например, текущий метод возвращает значение 17.

Это является проблемой, по крайней мере при использовании драйвера в режиме прерываний (irq mode). Размер, определенный для TX FIFO, также принимается за размер RX FIFO. Когда транзакция SPI пытается записать количество байт, равное размеру буфера или больше, происходит следующее: например, при размере FIFO 16 байт: Драйвер останавливает аппаратное обеспечение SPI и записывает 17 байт в TX FIFO, запускает аппаратное обеспечение SPI и переходит в режим ожидания (sleep).

Аппаратная часть затем сдвигает наружу 17 байт (FIFO + сдвиговый регистр) и одновременно считывает байты во входной буфер RX FIFO. Однако у него всего 16 ячеек, поэтому один байт теряется. Затем устанавливается флаг TX FIFO empty, что пробуждает драйвер снова; он выполняет быстрый путь обработки и читает 16 байт из RX FIFO, но перед чтением последнего (потерянного) 17-го байта выполняется следующий код:

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

Драйвер считывает регистр статуса и проверяет, не пуст ли RX FIFO. Но в нашем случае он пуст. Поэтому эта проверка бесконечно крутится в цикле while, блокируя драйвер.

Этот патч исправляет логику определения размера буфера FIFO.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Ответственный

Linux

Резервировать

15.08.2026

Раскрытие

15.08.2026

Модерация

принято

Вход

VDB-390236

EPSS

0.00000

KEV

Нет

Деятельности

Очень низкий

Сектор

Police, Pharma, ...

Источники

Do you need the next level of professionalism?

Upgrade your account now!