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

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

CVE-2026-74721

accel/amxdna: Fix page-insertion errors in amdxdna_insert_pages()

7.8 EPSS 0.2% AV:L

Published 2026-08-22 (2 months ago) by the Linux kernel CNA. Subsystem drivers/accel. Debian urgency: unimportant.

What to do, per Debian release

Debian's own status for CVE-2026-74721 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 12bookwormnot affected6.1.190-1Nothing to do. bookworm never shipped the vulnerable code.
Debian 13trixienot affected6.12.113-1Nothing to do. trixie never shipped the vulnerable code.
Debian 14forkyfixed7.1.9-1Update the kernel and reboot. Fixed in 7.1.9-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.1.9-1Update the kernel and reboot. Fixed in 7.1.9-1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

Two error paths in amdxdna_insert_pages() called vma->vm_ops->close(vma) before returning an error code to the caller. This is incorrect: amdxdna_gem_obj_mmap() registers an HMM interval notifier before calling amdxdna_insert_pages(), and on a hard error it jumps to hmm_unreg to undo that registration. Calling vm_ops->close() manually — which drops the shmem pages_pin_count and the GEM object reference that backs the VMA — before the mmap syscall has even returned causes those resources to be released while the VMA is still alive. The kernel VMA teardown will call vm_ops->close() a second time when the process later unmaps the range, producing a reference count underflow. Replace both hard-error returns with a deferred-fault approach that keeps the VMA alive and retries page insertion through the HMM range-fault path.

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/accel/amdxdna/amdxdna_gem.c

What this is
AMD XDNA DRIVERMAINTAINERS section matched on drivers/accel/amdxdna/ · dri-devel@lists.freedesktop.org · Supported
Kernel module
amdxdna

Check it on the machine

grep -wE 'CONFIG_DRM_ACCEL|CONFIG_DRM_ACCEL_AMDXDNA' /boot/config-$(uname -r)

Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.

lsmod | grep -w amdxdna

Prints a line if that module is loaded right now, and nothing if it is not. One that is not loaded can still be loaded later by anything that needs it.

Show whether Debian builds this, per release

Debian builds this, but not on every flavour. At least one release below builds the code on some of its kernel flavours and not on others, so the answer depends on the architecture and flavour installed. The build rule could not be established for 2 releases, so nothing is claimed about those.

  • bookworm, trixie?
  • forky, sidMnot built on amd64/cloud-amd64, arm64/arm64, arm64/arm64-16k, arm64/cloud-arm64, arm64/rt-arm64, armhf/armmp, armhf/armmp-lpae, loong64/loong64, ppc64el/powerpc64le, ppc64el/powerpc64le-64k, riscv64/riscv64, s390x/s390x
?
not established - no Makefile entry for the affected file
M
a module where it is built at all; some flavours do not build it

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.

Build switches
CONFIG_DRM_ACCEL, CONFIG_DRM_ACCEL_AMDXDNA
Reads as
all on means the file is compiled; any one off means it is not.

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 kbuild Makefiles Debian linux-config packages

Signals

Published
2026-08-22 (2 months ago)source
CVSS
7.8 high
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:Hsource recompute it
Attack vector
local (AV:L)source
EPSS
0.17%, higher than 6.3% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
unimportantsource
Subsystem
drivers/accel

Upstream fixes

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

IntroducedFixed inCommit
6.166.18.57b3d05a335cbd
6.167.1.91501e4d07c6f
6.167.28d51e0fd3e69

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
Exploitation requires a local mmap() on an AMD XDNA GEM buffer through /dev/accel/accel* after DRM_IOCTL_AMDXDNA_CREATE_BO; amdxdna_insert_pages() is only reached from drm_gem_mmap→amdxdna_gem_obj_mmap with no network, adjacent-radio, or physical-bus entry point.
AC:LAttack complexity, low
On affected Ryzen AI systems the attacker opens the accel node, creates a buffer, and mmap()s it; vm_insert_pages() or handle_mm_fault() failures are reliably forced via RLIMIT_AS/cgroup memory pressure, deterministically hitting vma->vm_ops->close() before failed-mmap VMA teardown invokes close again.
PR:LPrivileges required, low
AMDXDNA_CREATE_BO and GEM mmap use ioctl flags 0 (no DRM_ROOT_ONLY/DRM_AUTH); any unprivileged local user allowed to open /dev/accel/accel* (typically render/video group) can reach the bug without real root or init-namespace capabilities.
UI:NUser interaction, none
The attacker opens the accel device, allocates a GEM object, and mmap()s it in their own process; no separate victim mount, file open, or other user interaction beyond the attacker's own syscalls is required.
S:UScope, unchanged
Premature vma->vm_ops->close() double-frees shmem pages_use_count and drm_gem_object references inside kernel DRM/GEM memory management; impact stays within the kernel security authority and is not a VM escape, hypervisor breakout, or IOMMU DMA-boundary bypass.
C:HConfidentiality impact, high
Double close releases backing shmem pages and GEM metadata while the VMA remains live until mmap teardown; refcount underflow creates use-after-free conditions that heap grooming can turn into arbitrary kernel memory disclosure beyond a bounded leak.
I:HIntegrity impact, high
The erroneous second close corrupts slab/refcount state on freed GEM objects and backing pages, providing primitives developable into arbitrary kernel writes and local privilege escalation rather than merely limited data modification.
A:HAvailability impact, high
refcount_t underflow and use-after-free in drm_gem_shmem_vm_close() and drm_gem_object_put() can immediately kernel-oops or panic the host; repeated mmap-trigger attempts sustain denial of service on affected AMD NPU systems.