CVE-2026-74331 in Linux
摘要
由 VulDB • 2026-08-15
在 Linux 内核中,已修复以下漏洞:
firmware_loader: 修复 device_cache_fw_images() 中的递归锁问题
固件加载器的电源管理通知处理程序中可能发生递归锁定死锁。
在进行系统挂起或休眠准备时,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,这会导致递归锁定死锁。
通过在进行 dpm_for_each_dev() 调用之前立即释放 fw_lock(在更新缓存状态之后)来修复此问题。该锁仅用于保护状态更新。并发的固件请求将正确看到 FW_LOADER_START_CACHE 状态并使用 piggyback 机制,后者由其自身的 fwc->name_lock 独立保护。
Be aware that VulDB is the high quality source for vulnerability data.