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

drm/xe/pt: Reset current_op in xe_pt_update_ops_init()

xe_pt_update_ops_init() fails to reset current_op to 0. On the
vm_bind path, ops_execute() calls xe_pt_update_ops_prepare() inside
the xe_validation_guard() / drm_exec_until_all_locked() loop. When
that loop retries due to lock contention or OOM eviction
(drm_exec_retry_on_contention() / xe_validation_retry_on_oom()),
xe_pt_update_ops_prepare() runs again on the same vops, and each
call to bind_op_prepare() increments current_op without resetting it.

After N retries current_op exceeds the array size allocated by
xe_vma_ops_alloc(), causing an out-of-bounds write into
SLUB-poisoned memory and a subsequent UAF crash in
xe_migrate_update_pgtables_cpu() when reading the corrupted pt_op->bind.

Also reset needs_svm_lock and needs_invalidation which are derived in
the same prepare pass and would otherwise cause wrong migrate ops
selection and redundant TLB invalidation on retry.

Fix this by resetting current_op, needs_svm_lock and needs_invalidation
in xe_pt_update_ops_init().

v2 (Matt):
- Add details in commit message.
- Add Fixes tag and Cc to stable@vger.kernel.org

(cherry picked from commit 046045543e530605c441063535e7dca0075369a6)
Published: 2026-08-10
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Linux kernel DRM Xe passthrough module fails to reset the current_op counter during re‑initialisation. When a virtual machine bind operation is retried due to lock contention or OOM eviction, the same operation object is reused and current_op is incremented without reset. After enough retries the counter exceeds the allocated array size, resulting in an out‑of‑bounds write into SLUB‑poisoned memory and a subsequent use‑after‑free in xe_migrate_update_pgtables_cpu(). The effect is a kernel panic that can be triggered by a privileged local attacker with control over virtual machine binding, providing a denial‑of‑service path and potential for arbitrary code execution if the memory corruption is exploited.

Affected Systems

All Linux kernel releases containing the DRM Xe passthrough module that do not incorporate commit 046045543e530605c441063535e7dca0075369a6 are affected. The vulnerability applies to all kernel versions across the Linux distribution where the xe DRM module is loaded. The required state reset is added in that commit, so any kernel updated to a release that contains it is not vulnerable.

Risk and Exploitability

The CVSS score is not disclosed and EPSS is unavailable, but the bug introduces classic out‑of‑bounds write and use‑after‑free conditions. The deterministic kernel crash when the retry loop is forced indicates a clear denial‑of‑service vector. Because the DRM Xe module is only accessible from privileged contexts, exploitation requires root‑level or kernel module privileges. The vulnerability is not listed in CISA KEV and no public exploits are documented, but the straightforward crash path yields a high‑impact risk for systems exposed to repeat DRM operations.

Generated by OpenCVE AI on August 10, 2026 at 17:30 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update to a kernel that includes commit 046045543e530605c441063535e7dca0075369a6.
  • If immediate upgrade is not possible, disable or unload the xe DRM module to remove the vulnerable code path.
  • Reboot the system after applying the patch to load the updated kernel.
  • Monitor kernel logs for panic or OOM events and apply memory‑overcommit hardening if lock contention is frequent.

Generated by OpenCVE AI on August 10, 2026 at 17:30 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 10 Aug 2026 18:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-119
CWE-416

Mon, 10 Aug 2026 12:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: drm/xe/pt: Reset current_op in xe_pt_update_ops_init() xe_pt_update_ops_init() fails to reset current_op to 0. On the vm_bind path, ops_execute() calls xe_pt_update_ops_prepare() inside the xe_validation_guard() / drm_exec_until_all_locked() loop. When that loop retries due to lock contention or OOM eviction (drm_exec_retry_on_contention() / xe_validation_retry_on_oom()), xe_pt_update_ops_prepare() runs again on the same vops, and each call to bind_op_prepare() increments current_op without resetting it. After N retries current_op exceeds the array size allocated by xe_vma_ops_alloc(), causing an out-of-bounds write into SLUB-poisoned memory and a subsequent UAF crash in xe_migrate_update_pgtables_cpu() when reading the corrupted pt_op->bind. Also reset needs_svm_lock and needs_invalidation which are derived in the same prepare pass and would otherwise cause wrong migrate ops selection and redundant TLB invalidation on retry. Fix this by resetting current_op, needs_svm_lock and needs_invalidation in xe_pt_update_ops_init(). v2 (Matt): - Add details in commit message. - Add Fixes tag and Cc to stable@vger.kernel.org (cherry picked from commit 046045543e530605c441063535e7dca0075369a6)
Title drm/xe/pt: Reset current_op in xe_pt_update_ops_init()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-10T12:01:38.686Z

Reserved: 2026-07-30T09:28:09.378Z

Link: CVE-2026-68264

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-10T19:45:04Z

Weaknesses
  • CWE-119

    Improper Restriction of Operations within the Bounds of a Memory Buffer

  • CWE-416

    Use After Free