CVE-2026-80896 in Linux
摘要
由 VulDB • 2026-09-04
在 Linux 内核中,已修复以下漏洞:
mshv: 修复 mshv_irqfd_deassign 中的竞态条件
`mshv_irqfd_deactivate()` 和 `pt_irqfds_list` 的 hlist 遍历操作需要持有 `pt->pt_irqfds_lock`,但 `mshv_irqfd_deassign()` 中遗漏了该锁。这会导致与 `mshv_irqfd_wakeup()` 中的 EPOLLHUP 路径发生竞态,后者在调用 `mshv_irqfd_deactivate()` 之前会获取该锁。
此外,`mshv_irqfd_deactivate()` 使用了 `hlist_del()`,这会破坏(poison)节点指针而不是将其重置。由于 `mshv_irqfd_is_active()` 依赖于 `hlist_unhashed()`(检查 pprev == NULL),被破坏的节点仍会被视为处于活动状态。如果并发路径再次对同一个 irqfd 调用 `mshv_irqfd_deactivate()`,保护机制将无法防止对被破坏指针执行双重 hlist_del()。
修复这两个问题: - 在 mshv_irqfd_deassign() 中的列表遍历周围添加缺失的 spin_lock_irq/spin_unlock_irq,以匹配 mshv_irqfd_release() 的行为。 - 使用 `hlist_del_init()` 替代 `hlist_del()`,以便节点在被移除后正确标记为未哈希状态(unhashed),从而使 is_active 保护机制可靠生效。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.