CVE-2026-31647Linux内核中的idpf驱动程序存在一个安全漏洞,涉及PREEMPT_RT环境下的自旋锁嵌套问题。该漏洞由于异步处理程序在持有完成量锁的情况下尝试获取BH自旋锁,导致内核报告无效等待上下文。本地低权限攻击者利用此漏洞可能导致系统崩溃或拒绝服务。
该漏洞源于Linux内核idpf驱动在处理异步虚拟通道(VC)消息时的锁机制设计缺陷。在启用PREEMPT_RT的内核中,`idpf_recv_mb_msg` 函数持有完成量的raw spinlock(`x->wait`),随后调用 `idpf_mac_filter_async_handler`。该异步处理程序尝试获取 `mac_filter_list_lock`(BH自旋锁)。由于raw spinlock与BH自旋锁的嵌套规则违反了PREEMPT_RT的锁依赖检查规则,导致内核触发“Invalid wait context”警告并可能引发死锁或崩溃。修复方案是将完成量的锁替换为 `idpf_vc_xn` 结构体中的本地锁。