CVE-2026-31455Linux内核的XFS文件系统模块存在一个竞态条件漏洞。在卸载文件系统的过程中,`xfs_unmount_flush_inodes()`函数在后台回收和inode垃圾收集(inodegc)线程仍在运行时尝试推送活动项目列表(AIL)。这种错误的执行顺序导致inodegc可能向AIL中插入新的脏inode,而回收线程可能竞相释放这些inode。这种并发冲突破坏了内核内存管理的一致性,可能引发系统崩溃或权限提升。
该漏洞位于Linux内核fs/xfs/xfs_super.c文件中的`xfs_unmount_flush_inodes()`函数。漏洞的根源在于卸载序列的执行顺序不当。在系统卸载XFS文件系统时,代码首先推送AIL(强制日志写入),但此时并未停止后台的inode回收工作(m_reclaim_work)和inode垃圾收集工作(inodegc)。由于并发执行,inodegc工作线程可能会在AIL推送期间重新将inode标记为可回收并重新排队m_reclaim_work,甚至将脏inode插入AIL。同时,后台回收线程可能正在尝试释放这些正在被处理的inode结构。这种并发访问导致了严重的竞态条件。尽管描述中提到该问题独立于释放后重用(UAF),但这种逻辑错误极易导致内核内存破坏。本地攻击者可利用此漏洞,通过在文件系统卸载或特定系统调用期间触发竞态,导致内核崩溃(DoS)或在特定条件下实现本地权限提升。