CVE-2026-31523Linux内核nvme-pci驱动存在竞争条件漏洞。由于允许在运行时更改轮询队列计数,系统在重置期间可能出现竞态窗口。高优先级任务可能在块层更新队列映射前尝试轮询队列,导致与中断驱动队列冲突。这会造成I/O双重完成,引发系统崩溃或拒绝服务。
该漏洞源于Linux内核nvme-pci驱动程序在处理多队列I/O轮询机制时的同步缺陷。具体场景发生在用户通过sysfs接口动态修改轮询队列数量时。驱动程序在执行重置操作以应用新配置的过程中,存在一个短暂的时间窗口。在此期间,块层的队列映射尚未更新,但高优先级的I/O任务可能仍尝试对旧队列进行轮询操作。由于此时队列可能已切换至中断驱动模式,这种并发访问导致了竞争条件。最直接的后果是同一个I/O指令被重复处理,即“双重完成”。这不仅违反了块层协议,还会导致内核引用计数错误或内存释放重用,进而引发内核恐慌或系统死锁,造成拒绝服务。