CVE-2026-99150: Linux kernel · drm/amdgpu: don't drop the runtime PM reference twice in amdgpu_gpr
Affects Linux kernelSource CVE Database V5
Not known to be exploited · fixed in de9f6bcdb44f0e410031002e2f103826ea6b6259 : update Linux kernel when convenient.
Data as of 28 Oct 2026, 10:58 UTC
Rated by Threat Radar · CVSS not yet scored by NVD
- Patch
- Available – fixed in de9f6bcdb44f0e410031002e2f103826ea6b6259, 253555a9baccefffe1f6e5f2fe54363c7c01ebb9, 652b1f26125fe48aed5f4944698a85b457eef491 +1
Exploitation evidence
Disclosed: evidence found.
CVE published 28 Oct 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponised: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 26 Oct 2026.
What to do
Upgrade Linux kernel to de9f6bcdb44f0e410031002e2f103826ea6b6259, 253555a9baccefffe1f6e5f2fe54363c7c01ebb9, 652b1f26125fe48aed5f4944698a85b457eef491 or 5.9.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| LinuxLinux | Affected
| Fixed in
|
| LinuxLinux | Affected
| Fixed in– |
Description
In the Linux kernel, the following vulnerability has been resolved: drm/amdgpu: don't drop the runtime PM reference twice in amdgpu_gpr amdgpu_debugfs_gpr_read() drops its runtime PM reference right after reading the wave registers. When copying them to userspace fails, it jumps to the err label, which drops the reference a second time. A read into a bad buffer on Navi31 either steals a reference somebody else holds (power/runtime_usage goes from 1 to 0) or underflows the count: amdgpu 0000:03:00.0: Runtime PM usage count underflow! The registers are already in the kernel buffer at that point, so finish the hardware access first and copy the buffer with a single copy_to_user() instead of the put_user() loop with its own error path. (cherry picked from commit 31035bbd74f7c3e10c163db875b8e67f8b50ee6a)