CVE-2026-31467Linux内核EROFS文件系统存在拒绝服务漏洞。在进程上下文(如dm-verity)中,bio完成路径直接调用解压缩而非使用工作队列。此行为在内存不足时可能触发内存交换I/O,导致submit_bio_wait死锁。由于bio_list已被初始化,系统将陷入无限等待,最终导致服务不可用及系统挂起,影响系统可用性。
该漏洞源于Linux内核EROFS子系统的bio完成路径设计缺陷。为了最小化调度延迟,系统在进程上下文(例如dm-verity环境)中直接调用解压缩函数,而不是触发另一个工作队列上下文。这种直接调用方式使用了GFP_KERNEL标志来调用vm_map_ram()。当系统处于内存不足状态时,vm_map_ram()可能会尝试生成内存交换I/O。然而,由于bio_list已经被初始化且非空,submit_bio_wait会进入等待状态。此时,交换I/O操作依赖于bio处理,而bio处理又被阻塞,从而形成一个死锁循环。这会导致系统挂起,影响可用性。官方修复方案是使用memalloc_noio_save和restore函数包装该路径,以禁止在内存分配时进行I/O回收。