All vulnerabilities
CVE-2026-98510

Linux: drm/xe/vm: nuke PTs only after unlinking contested VMAs

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.20%Chance of exploitation activity in the next 30 days, higher than 9% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in70fddc065ac80845ffd33095b3635d59883cf7e6Also 24a22fb3c731474b68e986af6804db450fb88617CVE List
Published18 Oct 2026Updated 19 Oct 2026CVE List

What fixes it

  • 70fddc065ac80845ffd33095b3635d59883cf7e6LinuxCVE List
  • 24a22fb3c731474b68e986af6804db450fb88617LinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

In the Linux kernel, the following vulnerability has been resolved:

drm/xe/vm: nuke PTs only after unlinking contested VMAs

In xe_vm_close_and_put(), external-BO VMAs are queued on the contested list for deferred destruction via xe_vma_destroy_unlocked(). However, xe_vm_pt_destroy() was previously invoked before processing contested VMAs, destroying vm->pt_root while those VMAs were still linked to their respective buffer objects (vm_bo->list.gpuva).

If a concurrent thread evicts one of those shared buffer objects, xe_bo_trigger_rebind() holding only bo->resv walks the BO's VMAs and, in fault mode, calls xe_vm_invalidate_vma() -> xe_pt_zap_ptes(). Because vm->pt_root[tile->id] is already NULL, dereferencing pt->level causes a NULL ptr deref.

Fix this by deferring xe_vm_free_scratch() and xe_vm_pt_destroy() until after all contested VMAs have been unlinked and destroyed.

User is reporting hitting a NULL ptr deref in xe_pt_zap_ptes(), which could be explained by this race.

(cherry picked from commit c2863648959489767f08892fd6e90577d2ea0b6a)

Text from CVE List

Affected versions 10

  • Linuxaffected: b06d47be7c83165d3b3e45e1d5f9520b79c7f5cc before 70fddc065ac80845ffd33095b3635d59883cf7e6CVE List
  • Linuxaffected: b06d47be7c83165d3b3e45e1d5f9520b79c7f5cc before ba678c2b02e0d36b53deb5a6d5e5ea044d36def7CVE List
  • Linuxaffected: b06d47be7c83165d3b3e45e1d5f9520b79c7f5cc before bddaa5e4094c134452c29e20a26c4718827e4cb1CVE List
  • Linuxaffected: b06d47be7c83165d3b3e45e1d5f9520b79c7f5cc before 24a22fb3c731474b68e986af6804db450fb88617CVE List
  • Linuxaffected: 6.8CVE List
  • Linuxunaffected: all versions before 6.8CVE List
  • Linuxunaffected: 6.12.112 through 6.12.*CVE List
  • Linuxunaffected: 6.18.55 through 6.18.*CVE List
  • Linuxunaffected: 7.2.9 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 4