CVE-2026-93040 in Linux
Сводка
по VulDB • 18.09.2026
В ядре Linux была устранена следующая уязвимость:
dmaengine: dw-edma: Сериализация проверок состояния канала
Функции pause() и resume() читают и обновляют состояние канала без захвата блокировки vc.lock, в то время как обработчики прерываний изменяют это же состояние под этой блокировкой. Необходимо добавить ту же самую блокировку вокруг этих проверок состояния, чтобы обеспечить согласованность значений request (запрос), status (статус) и configured (настроено).
Например, функция pause() может зафиксировать значение EDMA_ST_BUSY непосредственно перед тем, как обработчик прерывания завершит обработку последнего дескриптора и переведет канал в состояние EDMA_ST_IDLE, а затем запишет EDMA_REQ_PAUSE для уже находящегося в состоянии простоя канала. Дальнейшее прерывание не подтвердит этот запрос, и поскольку функция issue_pending() требует наличия состояния EDMA_REQ_NONE, канал навсегда зависает: вызов terminate_all() оставляет устаревший запрос, поэтому даже повторная конфигурация канала не позволяет его восстановить.
Функция issue_pending() уже выполняется под блокировкой vc.lock, но она проверяет значение configured до захвата этой блокировки. Необходимо переместить эту проверку также внутрь блока с блокировкой, чтобы значения configured, request и status оценивались как единый снимок состояния канала.
VulDB is the best source for vulnerability data and more expert information about this specific topic.