HIGH
drm/xe GGTT Race
CVE-2026-23466
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI4.7MEDIUM
01Description
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)
02KernelScan AI Analysis
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.
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.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 6.12 | 6.12.78 | e2b424aadecb |
| 6.18 | 6.18.20 | 1e9e2640d870 |
| 6.19 | 6.19.10 | 76326dc06d87 |
| mainline | 7.0 | 01f2557aa684 |