Read the docs
TI-2024-17806 Aliases CVE-2024-26939GHSA-gghh-gpx3-pmx6

drm/i915/vma: Fix UAF on destroy against retire race

Priority LOW 36CWE-416Published · Updated

Key facts

Attack vector
Local
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
Code execution
Confidentiality · integrity · availability
High · High · High
Fix status
Partial Red Hat: 16 fixed, 2 without a fix

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and Red Hat. Impact type from CWE-416 and the CVSS impact.

Summary

In the Linux kernel, the following vulnerability has been resolved: drm/i915/vma: Fix UAF on destroy against retire race Object debugging tools were sporadically reporting illegal attempts to free a still active i915 VMA object when parking a GT believed to be idle. [161.359441] ODEBUG: free active (active state 0) object: ffff88811643b958 object type: i915_active hint: __i915_vma_active+0x0/0x50 [i915] [161.360082] WARNING: CPU: 5 PID: 276 at lib/debugobjects.c:514 debug_print_object+0x80/0xb0 ... [161.360304] CPU: 5 PID: 276 Comm: kworker/5:2 Not tainted 6.5.0-rc1-CI_DRM_13375-g003f860e5577+ #1 [161.360314] Hardware name: Intel Corporation Rocket Lake Client Platform/RocketLake S UDIMM 6L RVP, BIOS RKLSFWI1.R00.3173.A03.2204210138 04/21/2022 [161.360322] Workqueue: i915-unordered __intel_wakeref_put_work [i915] [161.360592] RIP: 0010:debug_print_object+0x80/0xb0 ... [161.361347] debug_object_free+0xeb/0x110 [161.361362] i915_active_fini+0x14/0x130 [i915] [161.361866] release_references+0xfe/0x1f0 [i915] [161.362543] i915_vma_parked+0x1db/0x380 [i915] [161.363129] __gt_park+0x121/0x230 [i915] [161.363515] ____intel_wakeref_put_last+0x1f/0x70 [i915] That has been tracked down to be happening when another thread is deactivating the VMA inside __active_retire() helper, after the VMA's active counter has been already decremented to 0, but before deactivation of the VMA's object is reported to the object debugging tool. We could prevent from that race by serializing i915_active_fini() with __active_retire() via ref->tree_lock, but that wouldn't stop the VMA from being used, e.g. from __i915_vma_retire() called at the end of __active_retire(), after that VMA has been already freed by a concurrent i915_vma_destroy() on return from the i915_active_fini(). Then, we should rather fix the issue at the VMA level, not in i915_active. Since __i915_vma_parked() is called from __gt_park() on last put of the GT's wakeref, the issue could be addressed by holding the GT wakeref long enough for __active_retire() to complete before that wakeref is released and the GT parked. I believe the issue was introduced by commit d93939730347 ("drm/i915: Remove the vma refcount") which moved a call to i915_active_fini() from a dropped i915_vma_release(), called on last put of the removed VMA kref, to i915_vma_parked() processing path called on last put of a GT wakeref. However, its visibility to the object debugging tool was suppressed by a bug in i915_active that was fixed two weeks later with commit e92eb246feb9 ("drm/i915/active: Fix missing debug object activation"). A VMA associated with a request doesn't acquire a GT wakeref by itself. Instead, it depends on a wakeref held directly by the request's active intel_context for a GT associated with its VM, and indirectly on that intel_context's engine wakeref if the engine belongs to the same GT as the VMA's VM. Those wakerefs are released asynchronously to VMA deactivation. Fix the issue by getting a wakeref for the VMA's GT when activating it, and putting that wakeref only after the VMA is deactivated. However, exclude global GTT from that processing path, otherwise the GPU never goes idle. Since __i915_vma_retire() may be called from atomic contexts, use async variant of wakeref put. Also, to avoid circular locking dependency, take care of acquiring the wakeref before VM mutex when both are needed. v7: Add inline comments with justifications for: - using untracked variants of intel_gt_pm_get/put() (Nirmoy), - using async variant of _put(), - not getting the wakeref in case of a global GTT, - always getting the first wakeref outside vm->mutex. v6: Since __i915_vma_active/retire() callbacks are not serialized, storing a wakeref tracking handle inside struct i915_vma is not safe, and there is no other good place for that. Use untracked variants of intel_gt_pm_get/put_async(). v5: Replace "tile" with "GT" across commit description (Rodrigo), - ---truncated---

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00246 16th percentileScored 2026-11-07
Fix Partial Linux (Linux): 6.1.88, 6.6.29, 6.8.3 +1Red Hat: 4 advisoriesRed Hat: 16 fixed, 2 without a fix

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
LinuxLinux5.19 and later6.1.88, 6.6.29, 6.8.3, 6.9Patch availableCNA
  • Linux VendorLinux Affected 5.19 and later Fixed in 6.1.88, 6.6.29, 6.8.3, 6.9 Patch available CNA

CPE configurations NVD · 2

CPEVersionsRoleVendor
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*5.19 to before 6.1.88; 6.2 to before 6.6.29; 6.7 to before 6.8.3VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:*6.9 rc1VulnerableLinux
  • cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* Versions 5.19 to before 6.1.88; 6.2 to before 6.6.29; 6.7 to before 6.8.3 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:* Versions 6.9 rc1 Vulnerable ·Linux

Remediation

  • Fix · CNA Linux (Linux) Fixed in 6.1.88, 6.6.29, 6.8.3, 6.9

Red Hat 4 advisories

  • RHSA-2025:9584 Released 2025-06-25 · Red Hat rating Moderate
    kernel security update
    • Red Hat CodeReady Linux Builder EUS (v.9.4) kernel-tools-libs-devel-5.14.0-427.74.1.el9_4, libperf-5.14.0-427.74.1.el9_4
    • Red Hat Enterprise Linux AppStream EUS (v.9.4) kernel-64k-debug-devel-5.14.0-427.74.1.el9_4, kernel-64k-debug-devel-matched-5.14.0-427.74.1.el9_4, kernel-64k-devel-5.14.0-427.74.1.el9_4 +11
    • Red Hat Enterprise Linux BaseOS EUS (v.9.4) bpftool-7.3.0-427.74.1.el9_4, kernel-5.14.0-427.74.1.el9_4, kernel-64k-5.14.0-427.74.1.el9_4 +29
    • Red Hat Enterprise Linux Real Time EUS (v.9.4) kernel-rt-5.14.0-427.74.1.el9_4, kernel-rt-core-5.14.0-427.74.1.el9_4, kernel-rt-debug-5.14.0-427.74.1.el9_4 +9
    • Red Hat Enterprise Linux Real Time for NFV EUS (v.9.4) kernel-rt-5.14.0-427.74.1.el9_4, kernel-rt-core-5.14.0-427.74.1.el9_4, kernel-rt-debug-5.14.0-427.74.1.el9_4 +11
  • RHSA-2024:9315 Released 2024-11-12 · Red Hat rating Moderate
    kernel security update
    • Red Hat CodeReady Linux Builder (v. 9) kernel-cross-headers-5.14.0-503.11.1.el9_5, kernel-tools-libs-devel-5.14.0-503.11.1.el9_5, libperf-5.14.0-503.11.1.el9_5
    • Red Hat Enterprise Linux AppStream (v. 9) kernel-64k-debug-devel-5.14.0-503.11.1.el9_5, kernel-64k-debug-devel-matched-5.14.0-503.11.1.el9_5, kernel-64k-devel-5.14.0-503.11.1.el9_5 +12
    • Red Hat Enterprise Linux BaseOS (v. 9) bpftool-7.4.0-503.11.1.el9_5, kernel-5.14.0-503.11.1.el9_5, kernel-64k-5.14.0-503.11.1.el9_5 +30
    • Red Hat Enterprise Linux Real Time (v. 9) kernel-rt-5.14.0-503.11.1.el9_5, kernel-rt-core-5.14.0-503.11.1.el9_5, kernel-rt-debug-5.14.0-503.11.1.el9_5 +9
    • Red Hat Enterprise Linux Real Time for NFV (v. 9) kernel-rt-5.14.0-503.11.1.el9_5, kernel-rt-core-5.14.0-503.11.1.el9_5, kernel-rt-debug-5.14.0-503.11.1.el9_5 +11
  • RHSA-2024:7000 Released 2024-09-24 · Red Hat rating Important
    kernel security update
    • Red Hat Enterprise Linux BaseOS (v. 8) bpftool-4.18.0-553.22.1.el8_10, kernel-4.18.0-553.22.1.el8_10, kernel-abi-stablelists-4.18.0-553.22.1.el8_10 +19
    • Red Hat Enterprise Linux CRB (v. 8) kernel-tools-libs-devel-4.18.0-553.22.1.el8_10
Show 1 more Red Hat advisories
  • RHSA-2024:7001 Released 2024-09-24 · Red Hat rating Important
    kernel-rt security update
    • Red Hat Enterprise Linux NFV (v. 8) kernel-rt-4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-core-4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-debug-4.18.0-553.22.1.rt7.363.el8_10 +9
    • Red Hat Enterprise Linux RT (v. 8) kernel-rt-4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-core-4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-debug-4.18.0-553.22.1.rt7.363.el8_10 +7

Vendor assessments

Red Hat

Red Hat rating: Moderate. Red Hat's page for this CVE →

ProductStatusPlan or fix
Red Hat Enterprise Linux 6AffectedNo fix planned: Out of support scope
Red Hat Enterprise Linux 7AffectedNo fix planned: Out of support scope
RHOAI-2.13-RHEL-8Fixed—
RHOAI-2.14-RHEL-8Fixed—
Red Hat CodeReady Linux Builder (v. 9)Fixed RHSA-2024:9315
Red Hat CodeReady Linux Builder EUS (v.9.4)Fixed RHSA-2025:9584
Red Hat Enterprise Linux AppStream (v. 9)Fixed RHSA-2024:9315
Red Hat Enterprise Linux AppStream EUS (v.9.4)Fixed RHSA-2025:9584
Red Hat Enterprise Linux BaseOS (v. 8)Fixed RHSA-2024:7000
Red Hat Enterprise Linux BaseOS (v. 9)Fixed RHSA-2024:9315
Red Hat Enterprise Linux BaseOS EUS (v.9.4)Fixed RHSA-2025:9584
Red Hat Enterprise Linux CRB (v. 8)Fixed RHSA-2024:7000
Red Hat Enterprise Linux NFV (v. 8)Fixed RHSA-2024:7001
Red Hat Enterprise Linux RT (v. 8)Fixed RHSA-2024:7001
Red Hat Enterprise Linux Real Time (v. 9)Fixed RHSA-2024:9315
Red Hat Enterprise Linux Real Time EUS (v.9.4)Fixed RHSA-2025:9584
Red Hat Enterprise Linux Real Time for NFV (v. 9)Fixed RHSA-2024:9315
Red Hat Enterprise Linux Real Time for NFV EUS (v.9.4)Fixed RHSA-2025:9584
Not affected: 2 products
  • Red Hat CodeReady Linux Builder (v. 9)
  • Red Hat Enterprise Linux AppStream (v. 9)

Timeline

  1. 2026-10-02 Threatist record created from CVE-2024-26939
  2. 2026-10-03 Alias added: GHSA-gghh-gpx3-pmx6
  3. 2026-10-29 Affected versions changed · Red Hat
  4. 2026-10-30 Fix available: RHOAI-2.13-RHEL-8, RHOAI-2.14-RHEL-8 · Red Hat

References

  • TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
  • TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
  • TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
  • TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
  • TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
  • TI-2021-05514 Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACE KEVCVSS 3.1HIGH 8.3
See all 15278 →

Sources