data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-93176 in the interactive tracker

CVE-2026-93176

drm/amd/display: Fix dangling pointer in plane reset function

7.0 EPSS 0.2% AV:L

Published 2026-09-17 (31 days ago) by the Linux kernel CNA. Subsystem drivers/gpu. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-93176 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormvulnerable6.1.190-1No fix published anywhere yet, neither in Debian nor upstream for the series bookworm tracks. Watch the Debian tracker page for this CVE. Advisories for bookworm have historically landed a median of 23 days after publication.
Debian 13trixievulnerable6.12.113-1No fix published anywhere yet, neither in Debian nor upstream for the series trixie tracks. Watch the Debian tracker page for this CVE. Advisories for trixie have historically landed a median of 11 days after publication.
Debian 14forkyfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

amdgpu_dm_plane_drm_plane_reset() frees the old state before allocating a new one. If kzalloc() fails, the function returns without updating the state pointer, leaving a dangling pointer to already freed memory. Fix this by allocating the new state first. On allocation failure, the old state remains untouched and the function safely returns. Found by Linux Verification Center (linuxtesting.org) with SVACE. [adjust for movement around current amd-staging-drm-next]

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c

What this is
AMD DISPLAY COREMAINTAINERS section matched on drivers/gpu/drm/amd/display/ · amd-gfx@lists.freedesktop.org · Supported
Show whether Debian builds this, per release

Not established. This site could not find the build rule for the affected file in the kernel trees Debian ships, so it has no answer about whether Debian compiles this code. Read that as unknown, never as absent.

  • bookworm, trixie, forky, sid?
?
not established - no Makefile entry for the affected file

Where a release above reads "not established", no build rule for the affected file was found in that release's kernel tree. That is a gap in this lookup, not a finding that the code is absent.

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS

Signals

Published
2026-09-17 (31 days ago)source
CVSS
7.0 high
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:Hsource recompute it
Attack vector
local (AV:L)source
EPSS
0.15%, higher than 4.0% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
drivers/gpu

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
6.06.18.573d8391d3149a
6.07.2.680c0f51aced4
6.07.398cad4bd1443

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:LAttack vector, local
The UAF is in amdgpu_dm_plane_drm_plane_reset() after plane->state is already live, reached from drm_mode_config_reset() in drm_atomic_helper_resume() via dm_destroy_cached_state() in dm_resume(). Callers are local: amdgpu_pmops_resume (S3/S0ix) and amdgpu_drm_ioctl then pm_runtime_get_sync then amdgpu_pmops_runtime_resume. No network protocol message is involved.
AC:HAttack complexity, high
The dangling plane->state exists only when kzalloc of struct dm_plane_state fails after amdgpu_dm_plane_drm_plane_destroy_state() has already kfree'd the previous state. That GFP_KERNEL miss during dm_resume()/drm_mode_config_reset() is not reliably attacker-controlled.
PR:LPrivileges required, low
amdgpu_drm_ioctl() issues pm_runtime_get_sync() with no capable() check, so any local user who can open /dev/dri/renderD* or card* (typical video/render-group access) can runtime-resume into dm_resume() and drm_mode_config_reset(). This is not init-namespace root.
UI:NUser interaction, none
The attacker opens the DRM node and issues their own ioctl to drive amdgpu_pmops_runtime_resume() into dm_resume(), or initiates their own session suspend/resume; no separate victim must mount media, attach a display, or accept a prompt.
S:UScope, unchanged
The freed object is the host-kernel struct dm_plane_state stored in drm_plane.state by amdgpu_dm; the UAF stays in the same kernel security authority and is not a KVM/Xen, IOMMU, or sandbox escape.
C:HConfidentiality impact, high
After the kfree, drm_atomic_helper_commit_duplicated_state() stores the dangling plane->state as old_state and amdgpu_dm_plane_drm_plane_duplicate_state() uses to_dm_plane_state(plane->state) to read dc_state and degamma/ctm/lut blobs from the freed heap object.
I:HIntegrity impact, high
drm_atomic_helper_swap_state() later calls atomic_destroy_state() on that already-freed plane->state (double-free), and duplicate_state copies reclaimed dc_state/fb pointers into the new live dm_plane_state, enabling a kernel write and control-flow hijack.
A:HAvailability impact, high
drm_atomic_helper_resume() uses the freed plane->state immediately in drm_atomic_helper_commit_duplicated_state(), and DRM_IOCTL_MODE_GETPLANE loads plane->state->crtc/fb; either path oopses or panics the host.