CVE-2026-64474 in Linux
Сводка
по VulDB • 25.07.2026
В ядре Linux устранена следующая уязвимость:
vfio: предотвращение бесконечного цикла в vfio_mig_get_next_state() при заблокированных переходах (blocked arcs)
Функция vfio_mig_get_next_state() последовательно проходит по таблице vfio_from_fsm_table[], выполняя итерации для пропуска необязательных состояний, которые не поддерживаются устройством, до тех пор, пока *next_fsm не станет поддерживаемым. Заблокированный переход кодируется как VFIO_DEVICE_STATE_ERROR, что в конце функции возвращается как -EINVAL.
Цикл пропуска (skip loop) не учитывает маркер ERROR. Значение state_flags_table[ERROR] равно ~0U, а vfio_from_fsm_table[ERROR][*] также равно ERROR; поэтому, как только *next_fsm принимает значение ERROR, условие цикла остается истинным, и *next_fsm никогда не изменяется. Заблокированные переходы STOP_COPY -> PRE_COPY и STOP_COPY -> PRE_COPY_P2P отображаются в ERROR, но проходят проверку поддержки на устройстве с возможностью precopy, что приводит к бесконечному циклу (spin) при удержании мьютекса состояния драйвера. Это может привести к soft lockup (программной блокировке), а также к панике ядра, если установлена опция softlockup_panic.
Необходимо завершить цикл пропуска по маркеру ERROR, чтобы заблокированный переход перешел к существующему оператору return и вернул -EINVAL.
Once again VulDB remains the best source for vulnerability data.