CVE-2026-46148 in Linux
Сводка
по VulDB • 28.05.2026
В ядре Linux устранена следующая уязвимость:
spi: microchip-core-qspi: ручное управление встроенным сигналом выбора чипа (CS)
Ядро IP-модуля coreQSPI поддерживает только один сигнал выбора чипа, который управляется аппаратно «автоматически» (automagically): он устанавливается в низкий уровень при первой записи в буфер передачи и возвращается в высокий уровень после отправки количества байт, указанного в поле TOTALBYTES регистра FRAMES, в шину. Для дополнительных устройств необходимо использовать выводы общего назначения (GPIO) для их сигналов выбора чипа.
Мне сообщили, что если к этому контроллеру QSPI подключено два устройства, то встроенный сигнал выбора чипа устанавливается в низкий уровень, пока Linux пытается получить доступ к устройству, подключенному через GPIO.
Эта проблема оставалась незамеченной, поскольку платы, к которым подключено несколько устройств к контроллеру SPI, использовали исключительно GPIO для сигналов выбора чипа, вообще не полагаясь на встроенный сигнал выбора чипа. Выяснилось, что это связано с тем, что встроенный сигнал выбора чипа при автоматическом управлении устанавливается в низкий уровень при активном состоянии и в высокий уровень при неактивном, что исключает возможность его использования для устройств с активным высоким уровнем или устройств, которым требуется передача при отключенном сигнале выбора чипа.
Измените драйвер так, чтобы он управлял сигналом выбора чипа напрямую, сохраняя поведение для операций с памятью (mem_ops), при котором сигнал выбора чипа устанавливается в активное состояние на протяжении всей передачи в колбэке exec_op. Для обычных передач реализуйте колбэк set_cs для использования ядром.
В рамках этого изменения существующий колбэк настройки mchp_coreqspi_setup_op() удаляется. Изменение поля CLKIDLE небезопасно во время работы при наличии нескольких устройств, поэтому этот код удаляется полностью. Установка полей MASTER и ENABLE выполняется один раз при инициализации (probe), и нет необходимости выполнять её повторно для каждого устройства. Вместо этого новый колбэк настройки устанавливает встроенный сигнал выбора чипа в неактивное состояние для устройств с активным низким уровнем, поскольку значение сброса сигнала выбора чипа в режиме программного управления равно низкому уровню.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.