KernelScan.io

HIGH

drm/xe GGTT Race

CVE-2026-23466

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI4.7MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: drm/xe: Open-code GGTT MMIO access protection GGTT MMIO access is currently protected by hotplug (drm_dev_enter), which works correctly when the driver loads successfully and is later unbound or unloaded. However, if driver load fails, this protection is insufficient because drm_dev_unplug() is never called. Additionally, devm release functions cannot guarantee that all BOs with GGTT mappings are destroyed before the GGTT MMIO region is removed, as some BOs may be freed asynchronously by worker threads. To address this, introduce an open-coded flag, protected by the GGTT lock, that guards GGTT MMIO access. The flag is cleared during the dev_fini_ggtt devm release function to ensure MMIO access is disabled once teardown begins. (cherry picked from commit 4f3a998a173b4325c2efd90bdadc6ccd3ad9a431)

02

Engine v0.2.0

Risk summary

Local users with low privileges can trigger a race condition in the Intel Xe GPU driver's GGTT teardown path. When buffer objects are freed asynchronously by worker threads while the GGTT MMIO region is being removed, the kernel may attempt to write to invalid or unmapped MMIO registers, causing a kernel panic or system crash. The vulnerability does not provide a controlled memory corruption or information disclosure primitive.

Affecteddrivers/gpu/drm/xe/xe_ggtt.c (Intel Xe GPU driver)

Vulnerability analysis

The vulnerability stems from insufficient synchronization during GGTT MMIO access protection. The original code relied on drm_dev_enter/exit hotplug protection, which fails when driver load fails because drm_dev_unplug() is never called in that path. Additionally, devm release functions cannot guarantee that all BOs with GGTT mappings are destroyed before the GGTT MMIO region is removed, because some BOs may be freed asynchronously by worker threads. The race window exists between GGTT teardown and ongoing BO cleanup. The fix introduces an explicit XE_GGTT_FLAGS_ONLINE flag protected by the GGTT mutex, gating MMIO access during teardown and preventing invalid MMIO writes.

03

BranchFixed inPatch commit
6.126.12.78e2b424aadecb
6.186.18.201e9e2640d870
6.196.19.1076326dc06d87
mainline7.001f2557aa684