Skip to main content

Linux Kernel EUVDEUVD-2026-24838

| CVE-2026-31479 HIGH
2026-04-22 416baaa9-dc9f-4396-8d5f-8c081fb06d67
7.8
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
7.3 HIGH

Local render-node access needs PR:L and AV:L; VM-state corruption gives high integrity/availability impact, but confidentiality gain is only inferred, so C:L.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
HIGH
qualitative
Red Hat
5.5 MEDIUM
qualitative

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

6
Analysis Generated
Jul 24, 2026 - 05:19 vuln.today
Patch released
Apr 27, 2026 - 23:19 nvd
Patch available
CVSS changed
Apr 27, 2026 - 15:22 NVD
7.8 (HIGH)
Patch available
Apr 22, 2026 - 16:33 EUVD
EUVD ID Assigned
Apr 22, 2026 - 14:22 euvd
EUVD-2026-24838
CVE Published
Apr 22, 2026 - 14:16 nvd
HIGH 7.8

DescriptionCVE.org

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.

  1. 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)

AnalysisAI

Local privilege escalation and kernel memory corruption in the Linux kernel's Intel Xe (drm/xe) GPU driver arises from incorrect prev/next tracking in the VM bind ioctl unwind path, affecting kernel 6.8 through 7.0-rc6 and stable branches before the 6.12.80/6.18.21/6.19.11 fixes. When a vectored bind operation fails and unwinds, the driver leaves overlapping GPU virtual-memory areas (VMAs) in place, corrupting VM state and triggering a WARNING at xe_vm.c:1217; a local user with access to the DRM/render device can reach this via crafted xe_vm_bind_ioctl calls (as observed with the vkd3d Direct3D-to-Vulkan translation layer). No public exploit identified at time of analysis, and EPSS is negligible at 0.02%.

Technical ContextAI

The affected component is the Intel Xe DRM kernel-mode driver (drm/xe), which manages GPU virtual address space for modern Intel discrete and integrated graphics. The bug lives in GPU VM management (xe_vm.c): during a rebind in the middle of an existing VMA where one or both mapped ends are already compatible, the driver skips re-binding those ends and nulls out its prev/next tracking, while also shrinking the original unmap VA range. On the failure/unwind path (vm_bind_ioctl_ops_unwind) this leaves three VAs - two un-removed ends plus a shrunken middle VA - so a subsequent unwind op that re-inserts over the original range overlaps the leftover ends, tripping the WARN and leaving the VM in an inconsistent state. This is a state-tracking / improper-cleanup class of flaw (no CWE was assigned in the input); the fix keeps prev/next tracking for skip cases and expands the unmap VA back to its original start/range before re-insertion (upstream commit aec6969f75af, cherry-picked to stable).

RemediationAI

Apply the kernel update containing the fix: upgrade to Linux 6.12.80, 6.18.21, 6.19.11, or mainline 7.0 (or a distribution kernel that has backported commits 5eda8001ebb5 / bfe9e314d757 / ccd41f110c60 / e6ba1749549e) - Vendor-released patch is available and fix versions are confirmed by the EUVD/stable-tree data. Distribution users should track Red Hat and SUSE errata for the rebuilt kernels. As a compensating control until patched, restrict access to the GPU DRM/render nodes (/dev/dri/renderD*) to trusted users via group membership/permissions, which prevents unprivileged local processes from issuing the xe_vm_bind ioctl at the cost of blocking GPU compute/3D acceleration for those users; on servers that do not need Intel Xe graphics, blacklisting the xe module removes the attack surface entirely but disables the affected GPU. Advisory and commit references: https://nvd.nist.gov/vuln/detail/CVE-2026-31479 and https://git.kernel.org/stable/c/ccd41f110c608b3cc347b9be881c3e72cd634b2b.

Vendor StatusVendor

SUSE

Severity: High
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Fixed
SUSE Linux Enterprise Desktop 15 SP7 Fixed
SUSE Linux Enterprise High Availability Extension 15 SP7 Fixed
SUSE Linux Enterprise High Availability Extension 15 SP7 Fixed
SUSE Linux Enterprise High Performance Computing 15 SP7 Fixed

Share

EUVD-2026-24838 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy