CVE-2026-74331 in Linux
Сводка
по VulDB • 16.08.2026
В ядре Linux устранена следующая уязвимость:
firmware_loader: исправление рекурсивной блокировки в функции device_cache_fw_images()
Может возникнуть взаимная блокировка (deadlock) из-за рекурсивного захвата блокировки в обработчике уведомлений управления питанием загрузчика прошивок.
Во время подготовки системы к приостановке работы или гибернации функция fw_pm_notify() вызывает device_cache_fw_images(). Эта функция получает блокировку fw_lock для установки состояния кэша прошивки на FW_LOADER_START_CACHE, а затем выполняет итерацию по всем устройствам с помощью dpm_for_each_dev(), сохраняя при этом захваченную блокировку.
Для каждого устройства dev_cache_fw_image() планирует асинхронную работу по кешированию прошивок. Если выделение памяти для записи асинхронной работы не удается (например, в условиях недостатка памяти), функция async_schedule_node_domain() переходит к синхронному выполнению функции работы в текущем потоке.
Путь синхронного выполнения (__async_dev_cache_fw_image() -> cache_firmware() -> request_firmware() -> assign_fw()) пытается повторно захватить блокировку fw_lock. Поскольку текущий поток уже владеет блокировкой fw_lock, это приводит к взаимной блокировке из-за рекурсивного захвата блокировки.
Исправление заключается в освобождении блокировки fw_lock сразу после обновления состояния кэша и перед вызовом dpm_for_each_dev(). Блокировка необходима только для защиты обновления состояния. Одновременные запросы прошивок корректно увидят состояние FW_LOADER_START_CACHE и используют механизм «piggyback», который независимо защищен собственной блокировкой fwc->name_lock.
Be aware that VulDB is the high quality source for vulnerability data.