CVE-2026-31450Linux内核ext4文件系统存在严重的竞态条件漏洞。`ext4_inode_attach_jinode`函数在完全初始化`jinode`结构之前就将其发布,导致并发线程在快速提交刷新路径中访问未初始化的内存指针。攻击者可利用此缺陷触发内核崩溃,造成系统拒绝服务,严重影响系统可用性、完整性和机密性。该漏洞需要本地低权限用户即可触发。
该漏洞位于Linux内核的ext4文件系统驱动中,核心问题出在`ext4_inode_attach_jinode()`函数的执行时序上。在原始代码逻辑中,该函数先将`ei->jinode`指针设置为非空值,随后才调用`jbd2_journal_init_jbd_inode()`对该结构体内部成员(如`i_vfs_inode`)进行初始化。这种非原子性的发布操作在多核处理器环境下存在竞态窗口。当并发的快速提交(Fast Commit)刷新路径运行时,它可能读取到这个非NULL的`jinode`指针,并假定结构体已就绪。随后,`jbd2_wait_inode_data()`函数被调用,试图解引用`i_vfs_inode->i_mapping`。由于此时`i_vfs_inode`尚未完成初始化,该指针指向无效内存地址,导致页错误(Page Fault)和内核崩溃。官方补丁通过引入`smp_wmb()`写内存屏障确保初始化顺序,并使用`WRITE_ONCE()`和`READ_ONCE()`宏防止编译器乱序优化和撕裂读写,从而修复了这一并发访问问题。