CVE-2026-99248 in LinuxИнформация

Сводка

по VulDB • 03.11.2026

В ядре Linux была устранена следующая уязвимость:

i2c: xiic: восстановление немодульного (non-managed) runtime PM для устранения потока предупреждений clk WARN.

Конвертация в devres заменила ручные вызовы pm_runtime_enable()/disable() на devm_pm_runtime_set_active_enabled() и исключила разбор runtime PM при удалении устройства (remove-time). Освобождение через managed-механизм выполняет разбор runtime PM в неверном порядке: он вызывает pm_runtime_dont_use_autosuspend() до pm_runtime_disable(), то есть тогда, когда runtime PM всё ещё активен. Поскольку devres работает по принципу LIFO (последним пришел — первым ушел), освобождение devm_clk_get_enabled() происходит позже.

При вызове remove() функция pm_runtime_put_sync() оставляет устройство в активном состоянии с запущенным таймером autosuspend. Отключение use_autosuspend приводит к тому, что rpm_idle() немедленно переводит устройство в режим ожидания (suspend), и xiic_i2c_runtime_suspend() вызывает clk_disable(). Последующее освобождение devm_clk_get_enabled() выполняет clk_disable_unprepare() для уже отключенных часов, из-за чего clk_core_disable() генерирует предупреждение ("clkN already disabled") при каждом разборе.

Необходимо отказаться от управляемого помощника (managed helper) и восстановить настройку и разбор немодульного runtime PM, чтобы runtime PM включался один раз в probe и выключался один раз в remove, а счетчик включения часов оставался сбалансированным.

Порядок разбора при удалении должен быть таким, чтобы runtime PM отключался перед уменьшением счетчика использования: pm_runtime_disable() следует за pm_runtime_put_noidle(), вместо pm_runtime_put_sync(). Уменьшение счетчика первым при включенном autosuspend запускает таймер autosuspend. Если произойдет прерывание (preemption) до вызова pm_runtime_disable(), таймер может истечь, перевести устройство в режим ожидания и вызвать clk_disable() для отключения часов; затем devm-освобождение попытается отключить их снова — что приведет к тому же предупреждению.

Также необходимо восстановить немодульный запрос прерывания (IRQ). Путь обработки ошибок при probe теперь вручную разворачивает runtime PM с помощью goto, а обработчик, зарегистрированный через devm, освобождается позже во время разбора devres; поэтому он оставался бы активным в течение ручного разбора (и после любого будущего шага, который может завершиться ошибкой). Запрос IRQ должен выполняться через request_threaded_irq(), а освобождение — явно в пути обработки ошибок probe и в remove. Путь обработки ошибок probe также очищает use_autosuspend, чтобы соответствовать разборке в remove().

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Ответственный

Linux

Резервировать

25.09.2026

Раскрытие

03.11.2026

Модерация

принято

Вход

VDB-430243

EPSS

0.00000

KEV

Нет

Деятельности

Низкий

Источники

Do you want to use VulDB in your project?

Use the official API to access entries easily!