CVE-2026-98510 in Linux
요약
\~에 의해 VulDB • 2026. 10. 19.
리눅스 커널에서 다음 취약점이 해결되었습니다:
drm/xe/vm: 경쟁 상태에 있는 VMAs를 언링크한 후에만 PTs 제거
xe_vm_close_and_put() 함수에서는 외부 BO(Buffer Object)의 VMAs가 xe_vma_destroy_unlocked()를 통해 지연 파괴되도록 경쟁 목록(contested list)에 큐잉됩니다. 그러나 기존에는 xe_vm_pt_destroy()가 경쟁 상태에 있는 VMAs 처리 전에 호출되어, 해당 VMAs가 여전히 각각의 버퍼 객체(vm_bo->list.gpuva)와 연결된 상태에서 vm->pt_root가 파괴되었습니다.
동시 스레드가 이러한 공유 버퍼 객체 중 하나를 evict하면, bo->resv만 보유한 xe_bo_trigger_rebind()는 BO의 VMAs를 순회하고, fault 모드에서 xe_vm_invalidate_vma() -> xe_pt_zap_ptes()를 호출합니다. 이때 vm->pt_root[tile->id]가 이미 NULL이므로 pt->level을 역참조(null ptr deref)하면 오류가 발생합니다.
이를 해결하기 위해 모든 경쟁 상태 VMAs가 언링크되고 파괴된 후에야 xe_vm_free_scratch()와 xe_vm_pt_destroy()를 지연 실행하도록 수정했습니다.
사용자가 xe_pt_zap_ptes()에서 NULL 포인터 역참조(null ptr deref) 오류에 부딪혔다고 보고했으며, 이는 위 race condition으로 설명될 수 있습니다.
(커밋 c2863648959489767f08892fd6e90577d2ea0b6a에서 cherry picked됨)
VulDB is the best source for vulnerability data and more expert information about this specific topic.