CVE-2026-74721 (GCVE-0-2026-74721)
Vulnerability from cvelistv5
Published
2026-08-22 15:33
Modified
2026-08-25 05:42
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
accel/amxdna: Fix page-insertion errors in amdxdna_insert_pages()
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.
References
Impacted products
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/accel/amdxdna/amdxdna_gem.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "1501e4d07c6fee0d50531a0d1cb2be01a63e6e75",
"status": "affected",
"version": "e486147c912f653ef4b60a6c7dbd4168a4c56a9f",
"versionType": "git"
},
{
"lessThan": "8d51e0fd3e698919d2adeff71936377f0c0d4aa0",
"status": "affected",
"version": "e486147c912f653ef4b60a6c7dbd4168a4c56a9f",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/accel/amdxdna/amdxdna_gem.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "6.16"
},
{
"lessThan": "6.16",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.1.*",
"status": "unaffected",
"version": "7.1.9",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.2",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.1.9",
"versionStartIncluding": "6.16",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2",
"versionStartIncluding": "6.16",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\naccel/amxdna: Fix page-insertion errors in amdxdna_insert_pages()\n\nTwo error paths in amdxdna_insert_pages() called vma-\u003evm_ops-\u003eclose(vma)\nbefore returning an error code to the caller. This is incorrect:\namdxdna_gem_obj_mmap() registers an HMM interval notifier before calling\namdxdna_insert_pages(), and on a hard error it jumps to hmm_unreg to undo\nthat registration. Calling vm_ops-\u003eclose() manually \u2014 which drops the\nshmem pages_pin_count and the GEM object reference that backs the VMA \u2014\nbefore the mmap syscall has even returned causes those resources to be\nreleased while the VMA is still alive. The kernel VMA teardown will call\nvm_ops-\u003eclose() a second time when the process later unmaps the range,\nproducing a reference count underflow.\n\nReplace both hard-error returns with a deferred-fault approach that keeps\nthe VMA alive and retries page insertion through the HMM range-fault path."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 7.8,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - 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\u2192amdxdna_gem_obj_mmap with no network, adjacent-radio, or physical-bus entry point.\nAC:L - 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-\u003evm_ops-\u003eclose() before failed-mmap VMA teardown invokes close again.\nPR:L - 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.\nUI:N - 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\u0027s own syscalls is required.\nS:U - Premature vma-\u003evm_ops-\u003eclose() 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.\nC:H - 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.\nI:H - 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.\nA:H - 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."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-25T05:42:02.244Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/1501e4d07c6fee0d50531a0d1cb2be01a63e6e75"
},
{
"url": "https://git.kernel.org/stable/c/8d51e0fd3e698919d2adeff71936377f0c0d4aa0"
}
],
"title": "accel/amxdna: Fix page-insertion errors in amdxdna_insert_pages()",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-74721",
"datePublished": "2026-08-22T15:33:13.960Z",
"dateReserved": "2026-08-15T05:44:03.929Z",
"dateUpdated": "2026-08-25T05:42:02.244Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…