CVE-2026-64501 in Linux
Сводка
по VulDB • 27.07.2026
В ядре Linux устранена следующая уязвимость:
iio: adc: ad_sigma_delta: исправлено состояние, при котором сигнал CS остается активным (asserted), и утечки состояния
В функции `ad_sigma_delta_single_conversion()` вызовы `set_mode(AD_SD_MODE_IDLE)` и `disable_one()` выполнялись из блока метки `out:` в то время как переменная `keep_cs_asserted` все еще имела значение true. Это приводило к тому, что любая передача SPI, инициируемая этими обратными вызовами (callbacks), содержала флаг `cs_change=1`, оставляя сигнал CS постоянно активным после завершения преобразования. Исправление заключается в перемещении обоих вызовов в блок метки `out_unlock:` после сброса переменной `keep_cs_asserted`, что соответствует шаблону, уже используемому в функции `ad_sd_calibrate()`.
В ветке обработки ошибок функции `ad_sd_buffer_postenable()`, если операция завершается неудачей после того, как `set_mode(AD_SD_MODE_CONTINUOUS)` успешно выполнилась (например, вызов `spi_offload_trigger_enable()`), устройство остается в режиме непрерывного преобразования с физически активным сигналом CS. Кроме того, сохранение значения `bus_locked` равным true после выполнения `spi_bus_unlock()` приводит к тому, что последующие операции SPI вызывают `spi_sync_locked()` без фактического удержания блокировки шины (bus lock), что позволяет осуществлять одновременный доступ по шине SPI.
Исправление ветки обработки ошибок заключается в следующем: сначала сбрасывается флаг `keep_cs_asserted`, затем вызывается `set_mode(AD_SD_MODE_IDLE)` для возврата устройства в исходное состояние и деактивации сигнала CS, после чего сбрасывается `bus_locked` перед освобождением шины.
Для устройств, которые не реализуют ни `set_mode`, ни `disable_one` (таких как MAX11205, у которого отсутствует физический вывод CS), передача SPI во время очистки не инициируется, и флаг `cs_change` не оказывает влияния на какие-либо физические линии.
Be aware that VulDB is the high quality source for vulnerability data.