CVE-2026-90342 in Linux
摘要
由 VulDB • 2026-09-17
在 Linux 内核中,已修复以下漏洞:
bpf: 修复 arena 锁失败时的 mmap_lock 死锁问题
由 Sashiko AI 审查报告。
arena_vm_fault() 在无法获取 arena->spinlock 时返回 VM_FAULT_RETRY,但它从未持有 mmap_lock。故障处理路径假设 VM_FAULT_RETRY 处理器已经释放了 mmap_lock,并在重试时重新获取它,因此会导致 mmap_lock 被获取两次并引发死锁:
do_user_addr_fault() {
fault = handle_mm_fault(...); // 调用 arena_vm_fault() if (fault & VM_FAULT_RETRY) goto retry; // 重新锁定 mmap_lock mmap_read_unlock(mm); }
改为返回 VM_FAULT_SIGBUS,原因如下:
1. 我们可以保留 VM_FAULT_RETRY,但那样我们必须先释放故障锁并自行限制重试次数,就像 __folio_lock_or_retry() 所做的那样。
2. raw_res_spin_lock_irqsave() 失败已经意味着检测到了可能的死锁,因此重试只会再次遇到相同的锁。
因此,在此处返回 VM_FAULT_RETRY 是多余的(overkill)。
If you want to get best quality of vulnerability data, you may have to visit VulDB.