CVE-2026-43095Linux内核ASoC子系统的SDCA驱动存在资源管理错误漏洞。在组件探测阶段,代码使用devm_request_threaded_irq()启用IRQ。然而,如果声卡被拆除,这些中断请求可能会持续存在。由于部分中断处理程序存储了对声卡和kcontrols的引用,在资源释放后访问这些引用会导致系统崩溃或失败。该漏洞源于在总线探测之外使用了devm托管资源,导致清理逻辑不完善,从而可能引发拒绝服务攻击。
该漏洞的技术核心在于Linux内核驱动的资源生命周期管理不当。在ASoC SDCA驱动中,sdca_irq_populate函数在组件探测期间使用devm_request_threaded_irq()来注册中断处理程序。通常情况下,devm(托管资源)机制应用于总线探测阶段,由驱动核心自动管理资源释放。然而,在组件探测中使用它会导致资源生命周期与声卡的实际生命周期不匹配。当声卡被拆除或卸载时,如果组件被销毁但托管资源尚未正确清理,中断处理程序可能仍然处于活动状态。这些处理程序持有指向已释放的snd_soc_component、声卡结构体或kcontrols的指针。当中断触发时,处理程序尝试访问这些悬空指针,导致内核空指针解引用或访问非法内存区域,进而引发内核崩溃。修复方案是移除devm前缀,改用标准的request_threaded_irq,并在驱动卸载时通过free_irq进行显式手动清理。