CVE-2026-43301Linux内核中的chips-media wave5驱动程序存在一个资源管理漏洞。该漏洞由于驱动在移除路径中无条件调用pm_runtime_put_sync(),而未正确处理设备可能已因自动挂起机制而处于挂起状态的情况。当设备已挂起时,PM运行时使用计数为0,此时调用put_sync会导致计数下溢至-1。这会在模块卸载时触发内核警告,并可能导致内核工作线程销毁异常,影响系统可用性。
该漏洞发生在Linux内核的多媒体驱动部分,具体位于chips-media wave5驱动中。在驱动初始化的probe阶段,代码调用了pm_runtime_use_autosuspend()来启用自动挂起功能。然而,在驱动移除的remove阶段,代码错误地调用了pm_runtime_put_sync()。PM运行时子系统使用引用计数来管理设备的电源状态。如果设备在移除前已经通过自动挂起机制进入休眠,其引用计数已经为0。此时再次调用pm_runtime_put_sync()会将引用计数减为-1,导致计数下溢。这种逻辑错误不仅破坏了内核电源管理的状态一致性,还会在模块卸载时触发kthread_destroy_worker中的WARNING,表明系统资源管理出现异常。虽然该漏洞主要导致拒绝服务(DoS)或内核警告,但修复它是必要的,以防止潜在的稳定性问题。修复方案是在remove路径中将pm_runtime_put_sync()替换为pm_runtime_dont_use_autosuspend(),从而正确配对probe中的调用,并允许pm_runtime_disable()正确清理引用计数。