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)
Published: 2026-10-28
Score: n/a
EPSS: n/a
KEV: No
Impact: Runtime PM underflow may cause device to be powered off unexpectedly, potentially leading to instability or denial of service
Action: Apply Patch
AI Analysis

Impact

The amdgpu_debugfs_gpr_read() function in the Linux kernel’s AMDGPU driver erroneously drops its runtime power management reference twice. The first drop occurs normally after reading wave registers, and a second drop is performed when an error path is triggered during a failed copy_to_user() operation. This double decrement allows the runtime PM usage counter to underflow from one to zero, which can cause the driver to believe the device is unused and potentially power it down. The counter underflow can manifest as kernel log entries such as ‘Runtime PM usage count underflow!’ and may lead to unstable device behavior or system hang when the device is unexpectedly powered off.

Affected Systems

The vulnerability affects the Linux kernel’s AMDGPU driver on any version that contains the buggy amdgpu_debugfs_gpr_read() implementation. It is present in kernels that lack commit 31035bbd74f7c3e10c163db875b8e67f8b50ee6a, which resolves the double‑drop issue. Systems running these kernel versions on AMD Navi31 GPUs are particularly susceptible.

Risk and Exploitability

There is no EPSS score available and the vulnerability is not listed in CISA’s KEV catalog. The CVSS score is not provided in the input. Because the bug is triggered by a local read operation into the amdgpu debugfs GPR interface, the exploitation window requires privileged local access (root or equivalent). An attacker who can invoke amdgpu_debugfs_gpr_read() with a bad buffer can cause the PM counter underflow, leading to potential service disruption. While the EPSS score is unknown, the control needed to exploit the flaw points to a moderate to high risk for systems with exposed or untrusted users able to write to the kernel debugfs interface.

Generated by OpenCVE AI on October 28, 2026 at 12:07 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Switch to a patched Linux kernel that incorporates commit 31035bbd and removes the double drop of the runtime PM reference.
  • If an immediate kernel upgrade is not possible, restrict access to the amdgpu debugfs GPR interface so that only trusted users can use it, preventing the conditions that trigger the bug.
  • Monitor kernel logs for ‘Runtime PM usage count underflow!’ messages and investigate any occurrence as a potential exploitation attempt.

Generated by OpenCVE AI on October 28, 2026 at 12:07 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 28 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416
CWE-682

Wed, 28 Oct 2026 10:45:00 +0000

Type Values Removed Values Added
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)
Title drm/amdgpu: don't drop the runtime PM reference twice in amdgpu_gpr
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-28T10:35:05.753Z

Reserved: 2026-09-25T10:25:14.396Z

Link: CVE-2026-99150

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-28T11:17:35.097

Modified: 2026-10-28T11:17:35.097

Link: CVE-2026-99150

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-28T12:15:14Z

Weaknesses