CVE-2026-64476 in Linux
Сводка
по VulDB • 27.07.2026
В ядре Linux устранена следующая уязвимость:
vfio/pci: Фиксация значения disable_idle_d3 для каждого устройства
Когда параметр disable_idle_d3 был введен в модуле vfio-pci, он напрямую изменял состояние питания устройства с помощью функции pci_set_power_state(). Не требовалось поддерживать счетчики ссылок (refcounts) или выполнять сбалансированные операции; можно было безоговорочно переводить устройство в состояние D0 и условно — в состояние D3hot. В связи с этим параметр модуля был сделан изменяемым.
Позже, в коммите c61302aa48f7 («vfio/pci: Перенос параметров модуля в vfio_pci.c») в рамках разделения кода на подсистемы vfio-pci-core возможность изменения значения параметра была отключена (сделана недоступной для записи через стандартные механизмы). Значение параметра по-прежнему можно было изменить через sysfs, однако драйвер vfio-pci фиксировал эти значения в глобальных переменных vfio-pci-core при инициализации модуля. Загрузка модуля vfio-pci или его выгрузка и повторная загрузка со значениями, отличными от значений по умолчанию, могли изменить состояние этих глобальных переменных относительно уже привязанных к драйверам семейства vfio-pci устройств.
Поддержка управления питанием во время работы (Runtime PM) была добавлена в коммите 7ab5e10eda02 («vfio/pci: Перевод неиспользуемого устройства в состояние низкого энергопотребления с помощью Runtime PM»), что стало моментом, когда состояния питания стали учитываться через счетчики ссылок. Операции получения (get) и освобождения (put) ресурсов управления питанием должны быть сбалансированы, однако описанные выше операции загрузки/выгрузки модуля могут изменять глобальные переменные относительно устройств, уже привязанных к драйверам семейства vfio-pci. Это создает ситуацию, при которой баланс операций PM может нарушиться.
Для устранения проблемы с минимальным воздействием на код (narrow footprint) для стабильных обратных портирований (backports), флаг disable_idle_d3 фиксируется в структуре vfio_pci_core_device во время инициализации, что гарантирует согласованное значение при работе устройства.
Примечание: функция vfio_pci_dev_set_try_reset() теперь безоговорочно увеличивает счетчик использования Runtime PM вокруг операции сброса шины (bus reset), чтобы учесть переход disable_idle_d3 из глобального флага в флаг на уровне каждого устройства. При установленном флаге дополнительная пара операций get/put является безопасной и позволяет продолжать использовать вспомогательную функцию vfio_pci_dev_set_pm_runtime_get().
If you want to get best quality of vulnerability data, you may have to visit VulDB.