CVE-2026-43448Linux内核中的nvme-pci驱动程序在`nvme_poll_irqdisable`函数中存在竞态条件漏洞。当轮询任务与设备复位任务并发执行时,由于缺乏同步机制,可能导致IRQ(中断请求)状态管理出现不一致。这种不一致会触发内核警告“Unbalanced enable for IRQ”,进而导致系统崩溃或拒绝服务。该漏洞允许本地低权限攻击者利用此缺陷破坏系统稳定性。
该漏洞源于`nvme_poll_irqdisable()`与`nvme_reset_work()`之间的竞争。`nvme_poll_irqdisable`先调用`disable_irq(pci_irq_vector(...))`获取并禁用MSI-X IRQ。若此时`nvme_reset_work`执行`nvme_dev_disable`将`pdev->msix_enabled`置0,随后的`pci_irq_vector`调用将返回INTx IRQ而非MSI-X IRQ。这导致`enable_irq`作用于一个从未被禁用的IRQ,破坏了内核IRQ的深度计数平衡,触发`__enable_irq`中的WARNING并导致系统崩溃。修复方法是将IRQ编号预先保存至局部变量,确保disable和enable操作针对同一编号。