CVE-2026-68273 (GCVE-0-2026-68273)
Vulnerability from cvelistv5
Published
2026-08-10 12:01
Modified
2026-08-17 05:02
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
drm/amdgpu: Fix context pstate override handling
There are several problems in the context pstate handling code.
The most serious ones are potential use-after-free and NULL pointer
dereferences at context initialization time. Both are due
amdgpu_ctx_init() not holding the adev->pm.stable_pstate_ctx_lock, which
is otherwise used from both sysfs and the context code itself for
modifying and clearing the stored context pointer.
Second issue is that context fini can trample over the pstate
configuration set via sysfs. This is due the restore state
(ctx->stable_pstate) being saved at context init time, and not if, or when
the context actually changes the pstate. As the context exits it will
therefore incorrectly restore to what was set before the sysfs override
was requested.
The simplest fix is to drastically simplify how the state is tracked, by
clearly defining the points at which pstate ownership is taken and
released, and to handle all transitions under the correct lock.
Instead of at context init time, the previous state is saved only at the
point the context overrides the current state, and is restored on context
exit only if the context is still the owner of the current override state.
(cherry picked from commit 1b5e413713c0a93bc1818394d0ce49aaad21bd27)
References
| URL | Tags | |
|---|---|---|
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| Linux | Linux |
Version: 79610d3041338dc1ef554d6fd8b3b3e23be527f5 Version: 79610d3041338dc1ef554d6fd8b3b3e23be527f5 Version: 79610d3041338dc1ef554d6fd8b3b3e23be527f5 Version: 79610d3041338dc1ef554d6fd8b3b3e23be527f5 Version: 6607901fce79959130db485e7549dacaaeef034e Version: 6.0.7 ≤ |
||
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "23a8726e1d7597fe7c9a59d5dc42ba8b7d345b8a",
"status": "affected",
"version": "79610d3041338dc1ef554d6fd8b3b3e23be527f5",
"versionType": "git"
},
{
"lessThan": "e06c39cc1c48dca68a5ffd971c23025a52d46634",
"status": "affected",
"version": "79610d3041338dc1ef554d6fd8b3b3e23be527f5",
"versionType": "git"
},
{
"lessThan": "9f9c88eb298c54348be3ca4087f4f4c615065b87",
"status": "affected",
"version": "79610d3041338dc1ef554d6fd8b3b3e23be527f5",
"versionType": "git"
},
{
"lessThan": "c1dc4ccb82c9e56325d8e7514ca4c90bd1efb351",
"status": "affected",
"version": "79610d3041338dc1ef554d6fd8b3b3e23be527f5",
"versionType": "git"
},
{
"status": "affected",
"version": "6607901fce79959130db485e7549dacaaeef034e",
"versionType": "git"
},
{
"lessThan": "6.1",
"status": "affected",
"version": "6.0.7",
"versionType": "semver"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "6.1"
},
{
"lessThan": "6.1",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.103",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.44",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.1.*",
"status": "unaffected",
"version": "7.1.6",
"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": "6.12.103",
"versionStartIncluding": "6.1",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.44",
"versionStartIncluding": "6.1",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.1.6",
"versionStartIncluding": "6.1",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2",
"versionStartIncluding": "6.1",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.0.7",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amdgpu: Fix context pstate override handling\n\nThere are several problems in the context pstate handling code.\n\nThe most serious ones are potential use-after-free and NULL pointer\ndereferences at context initialization time. Both are due\namdgpu_ctx_init() not holding the adev-\u003epm.stable_pstate_ctx_lock, which\nis otherwise used from both sysfs and the context code itself for\nmodifying and clearing the stored context pointer.\n\nSecond issue is that context fini can trample over the pstate\nconfiguration set via sysfs. This is due the restore state\n(ctx-\u003estable_pstate) being saved at context init time, and not if, or when\nthe context actually changes the pstate. As the context exits it will\ntherefore incorrectly restore to what was set before the sysfs override\nwas requested.\n\nThe simplest fix is to drastically simplify how the state is tracked, by\nclearly defining the points at which pstate ownership is taken and\nreleased, and to handle all transitions under the correct lock.\n\nInstead of at context init time, the previous state is saved only at the\npoint the context overrides the current state, and is restored on context\nexit only if the context is still the owner of the current override state.\n\n(cherry picked from commit 1b5e413713c0a93bc1818394d0ce49aaad21bd27)"
}
],
"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 - The bug is reached only through the DRM_IOCTL_AMDGPU_CTX ioctl on a local /dev/dri/renderD* or card* node (registered DRM_AUTH|DRM_RENDER_ALLOW in amdgpu_drv.c:3063), and the racing writer is the local sysfs power_dpm_force_performance_level path. No network or adjacent-network path reaches amdgpu context pstate handling.\nAC:L - The attacker owns both sides of the race \u2014 one thread loops AMDGPU_CTX_OP_SET_STABLE_PSTATE and context free while another loops AMDGPU_CTX_OP_ALLOC_CTX \u2014 and can retry indefinitely. The dangling-pointer variant (fini re-assigning adev-\u003epm.stable_pstate_ctx = ctx just before kfree) needs no race at all: once latched, every later context creation dereferences freed memory deterministically.\nPR:L - No capability or authorization check exists anywhere on the path (amdgpu_ctx_ioctl -\u003e amdgpu_ctx_alloc/amdgpu_ctx_stable_pstate -\u003e amdgpu_ctx_init); an unprivileged local user only needs an open render node fd, which is routinely granted to desktop users in the render/video group, to containers, sandboxed GPU processes, and to ordinary apps on Android/Chrome OS.\nUI:N - The attacker triggers everything with its own ioctls on its own file descriptors and its own threads; no action by another user or administrator is required, and the crash or freed-object read happens synchronously in the attacker\u0027s own syscall.\nS:U - The corrupted state (adev-\u003epm.stable_pstate_ctx and the freed struct amdgpu_ctx) and all consequences stay within the kernel of the machine running the amdgpu driver; no VM, IOMMU, or sandbox security boundary is crossed.\nC:H - amdgpu_ctx_init() dereferences a stale adev-\u003epm.stable_pstate_ctx pointer after the context has been kfree()d, reading a field out of a freed kmalloc object that the attacker can reclaim and control via heap spraying; per kernel scoring guidance a use-after-free is treated as High since freed-object access can be leveraged toward kernel memory disclosure.\nI:H - The unlocked read/write of the global pstate-owner pointer leaves a dangling kernel pointer in adev-\u003epm.stable_pstate_ctx and lets a freed, attacker-reclaimable object drive amdgpu_dpm_force_performance_level(); the commit also documents context teardown trampling the DPM configuration set through root-only sysfs, so an unprivileged user corrupts privileged device state.\nA:H - The unlocked check-then-use of adev-\u003epm.stable_pstate_ctx yields a NULL pointer dereference when a concurrent fini or sysfs write clears it, and the stale-pointer case faults on freed or unmapped slab memory \u2014 either produces a kernel oops and a wedged GPU, repeatable at will by an unprivileged local user."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-17T05:02:06.886Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/23a8726e1d7597fe7c9a59d5dc42ba8b7d345b8a"
},
{
"url": "https://git.kernel.org/stable/c/e06c39cc1c48dca68a5ffd971c23025a52d46634"
},
{
"url": "https://git.kernel.org/stable/c/9f9c88eb298c54348be3ca4087f4f4c615065b87"
},
{
"url": "https://git.kernel.org/stable/c/c1dc4ccb82c9e56325d8e7514ca4c90bd1efb351"
}
],
"title": "drm/amdgpu: Fix context pstate override handling",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-68273",
"datePublished": "2026-08-10T12:01:48.734Z",
"dateReserved": "2026-07-30T09:28:09.379Z",
"dateUpdated": "2026-08-17T05:02:06.886Z",
"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…