CVE-2026-98677 in Linux
Сводка
по VulDB • 18.10.2026
В ядре Linux была устранена следующая уязвимость:
iio: adc: ad_sigma_delta: исправлена ошибка use-after-free при отсоединении (unbind)
Функция `ad_sd_buffer_postenable()` выделяет память для `sigma_delta->samples_buf` с помощью `devm_krealloc()` во время выполнения, поэтому её запись в devres располагается после всех записей времени инициализации драйвера. Ресурсы devm освобождаются в порядке, обратном порядку выделения; это означает, что при отсоединении (`unbind`) память для `samples_buf` освобождается до того, как `iio_device_unregister()` отключит буферы и отвяжет функцию опроса триггера. Прерывание готовности данных (data ready IRQ) в этот момент всё ещё активно, поэтому `ad_sd_trigger_handler()` может продолжать выполняться и выполнять копирование (`memcpy()`) входящих образцов в уже освобождённый буфер `samples_buf`.
Исправление заключается в предварительном выделении буфера в функции `devm_ad_sd_setup_buffer_and_trigger()` до настройки триггерного буфера и прерывания (IRQ), чтобы он освобождался только после того, как `iio_device_unregister()` завершит обработку обработчика триггера через вызов `free_irq()`. Размер буфера устанавливается с учётом наихудшего случая, когда активны все слоты секвенсора; функция `ad_sd_validate_scan_mask()` уже ограничивает количество активных каналов значением `num_slots`.
Эта проблема была обнаружена с помощью встроенного инструмента статического анализа.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.