CVE-2026-31479: drm/xe: always keep track of remap prev/next
In the Linux kernel, the following vulnerability has been resolved:
drm/xe: always keep track of remap prev/next
During 3D workload, user is reporting hitting:
[ 413.361679] WARNING: drivers/gpu/drm/xe/xe_vm.c:1217 at vm_bind_ioctl_ops_unwind+0x1e2/0x2e0 [xe], CPU#7: vkd3d_queue/9925
[ 413.361944] CPU: 7 UID: 1000 PID: 9925 Comm: vkd3d_queue Kdump: loaded Not tainted 7.0.0-070000rc3-generic #202603090038 PREEMPT(lazy)
[ 413.361949] RIP: 0010:vm_bind_ioctl_ops_unwind+0x1e2/0x2e0 [xe]
[ 413.362074] RSP: 0018:ffffd4c25c3df930 EFLAGS: 00010282
[ 413.362077] RAX: 0000000000000000 RBX: ffff8f3ee817ed10 RCX: 0000000000000000
[ 413.362078] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
[ 413.362079] RBP: ffffd4c25c3df980 R08: 0000000000000000 R09: 0000000000000000
[ 413.362081] R10: 0000000000000000 R11: 0000000000000000 R12: ffff8f41fbf99380
[ 413.362082] R13: ffff8f3ee817e968 R14: 00000000ffffffef R15: ffff8f43d00bd380
[ 413.362083] FS: 00000001040ff6c0(0000) GS:ffff8f4696d89000(0000) knlGS:00000000330b0000
[ 413.362085] CS: 0010 DS: 002b ES: 002b CR0: 0000000080050033
[ 413.362086] CR2: 00007ddfc4747000 CR3: 00000002e6262005 CR4: 0000000000f72ef0
[ 413.362088] PKRU: 55555554
[ 413.362089] Call Trace:
[ 413.362092] <TASK>
[ 413.362096] xe_vm_bind_ioctl+0xa9a/0xc60 [xe]
Which seems to hint that the vma we are re-inserting for the ops unwind
is either invalid or overlapping with something already inserted in the
vm. It shouldn't be invalid since this is a re-insertion, so must have
worked before. Leaving the likely culprit as something already placed
where we want to insert the vma.
Following from that, for the case where we do something like a rebind in
the middle of a vma, and one or both mapped ends are already compatible,
we skip doing the rebind of those vma and set next/prev to NULL. As well
as then adjust the original unmap va range, to avoid unmapping the ends.
However, if we trigger the unwind path, we end up with three va, with
the two ends never being removed and the original va range in the middle
still being the shrunken size.
If this occurs, one failure mode is when another unwind op needs to
interact with that range, which can happen with a vector of binds. For
example, if we need to re-insert something in place of the original va.
In this case the va is still the shrunken version, so when removing it
and then doing a re-insert it can overlap with the ends, which were
never removed, triggering a warning like above, plus leaving the vm in a
bad state.
With that, we need two things here:
1) Stop nuking the prev/next tracking for the skip cases. Instead
relying on checking for skip prev/next, where needed. That way on the
unwind path, we now correctly remove both ends.
2) Undo the unmap va shrinkage, on the unwind path. With the two ends
now removed the unmap va should expand back to the original size again,
before re-insertion.
v2:
- Update the explanation in the commit message, based on an actual IGT of
triggering this issue, rather than conjecture.
- Also undo the unmap shrinkage, for the skip case. With the two ends
now removed, the original unmap va range should expand back to the
original range.
v3:
- Track the old start/range separately. vma_size/start() uses the va
info directly.
(cherry picked from commit aec6969f75afbf4e01fd5fb5850ed3e9c27043ac)
Security readout for executives and security teams
Plain-English summary
A Linux Xe GPU virtual-memory flaw can leave overlapping mappings after a failed bind operation during 3D activity, producing kernel warnings and an inconsistent VM state. Its CVSS assessment indicates potentially high confidentiality, integrity, and availability impact, although the supplied evidence does not demonstrate compromise or quantify practical impact.
Executive priority
Prioritize multi-user workstations and GPU-enabled systems that execute untrusted local workloads. Schedule prompt kernel remediation because the supplied rating is high and the failure leaves GPU virtual-memory state inconsistent. Systems without an active drm/xe driver are less likely to be exposed, but inventory should confirm that assumption.
Technical view
During unwind of certain remap or vector-bind failures, compatible mapping ends remained present while the original unmap range stayed reduced. Reinserting the original virtual area could then overlap those ends. The correction retains previous/next mapping tracking, removes the ends during unwind, and restores the original range before reinsertion.
Likely exposure
Exposure is most likely on affected Linux systems using the drm/xe driver and allowing low-privileged local users to submit GPU workloads. Supplied version data includes 6.8, 6.12.80, 6.18.21, 6.19.11, and 7.0, but lacks clear range semantics. Confirm vendor backports instead of relying solely on version strings.
Exploitation context
No active exploitation is established. The bundle marks this CVE as absent from KEV and provides no exploit report. The issue was observed during a 3D workload and reproduced through an IGT according to the commit narrative. That demonstrates triggerability, not malicious exploitation.
Researcher notes
The documented failure concerns incorrect rollback bookkeeping, not a source-confirmed memory-corruption primitive. Previous and next mappings were discarded from tracking in skip cases, while unmap shrinkage was not reversed. The source provides no CWE, exploit primitive, or demonstrated privilege escalation, so those properties should not be inferred.
Mitigation direction
Update to a vendor-supported kernel containing the relevant stable fix or backport.
Confirm the deployed kernel includes the cited corrective commit for its maintained branch.
Until patched, restrict untrusted local access to affected GPU workloads where operationally feasible.
Follow Linux distribution guidance for exact fixed package and branch information.
Validation and detection
Inventory kernel versions and determine whether the drm/xe module is active on each host.
Check vendor package changelogs to confirm that CVE-2026-31479 is backported.
Review kernel logs for xe_vm.c warnings involving vm_bind_ioctl_ops_unwind or xe_vm_bind_ioctl.
After updating, run approved 3D regression workloads and confirm the warning does not recur.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2026-31479 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
0ADP providers
5Source links
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.