Description
In the Linux kernel, the following vulnerability has been resolved:

vfio/pci: Latch disable_idle_d3 per device

When disable_idle_d3 was introduced in vfio-pci, it directly manipulated
the device power state with pci_set_power_state(). There were no
refcounts to maintain or balanced operations, we could unconditionally
bring the device to D0 and conditionally move it to D3hot. Therefore
the module parameter was made writable.

Later, in commit c61302aa48f7 ("vfio/pci: Move module parameters to
vfio_pci.c"), as part of the vfio-pci-core split, the writable aspect
of the module parameter was nullified. The parameter value could still
be changed through sysfs, but the vfio-pci driver latched the values
into vfio-pci-core globals at module init. Loading the vfio-pci module,
or unloading and reloading, with non-default or different values could
change the globals relative to existing devices bound to vfio-pci
variant drivers.

Runtime PM was introduced in commit 7ab5e10eda02 ("vfio/pci: Move the
unused device into low power state with runtime PM"), which marks the
point where power states became refcounted. PM get and put operations
need to be balanced, but the same module operations noted above can
change the global variables relative to those devices already bound to
vfio-pci variant drivers. This introduces a window where PM operations
can now become unbalanced.

To resolve this with a narrow footprint for stable backports, the
disable_idle_d3 flag is latched into the vfio_pci_core_device at the
time of initialization, such that the device always operates with a
consistent value.

NB. vfio_pci_dev_set_try_reset() now unconditionally raises the
runtime PM usage count around bus reset to account for disable_idle_d3
becoming a per-device rather than global flag. When this flag is set,
the additional get/put pair is harmless and allows continued use of the
shared vfio_pci_dev_set_pm_runtime_get() helper.
Published: 2026-07-25
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Linux kernel VFIO PCI driver originally exposed the disable_idle_d3 module parameter as a global writable flag. Subsequent changes latched the value at module initialization and introduced reference‑counted power‑management operations via runtime PM. If the global value is altered through sysfs or across module reloads, the power‑state get/put counts can become unbalanced, causing a device to remain in a low power state or become unresponsive. This mismanagement of a shared resource constitutes a reference‑counting flaw.

Affected Systems

All Linux kernel builds that include the VFIO PCI driver are affected. No specific version range is listed, so any distribution using a kernel that incorporates the original global disable_idle_d3 parameter and the runtime PM changes is potentially impacted.

Risk and Exploitability

The CVSS score of 5.5 indicates medium severity, but the EPSS score of <1% shows a very low probability of exploitation, and the flaw is not listed in CISA KEV. Exploitation would require privileged access to modify sysfs entries or reload the VFIO PCI module, implying a local or privileged attack surface. If successful, an attacker could induce device instability or a denial‑of‑service condition on the affected system. While the likelihood remains low, the impact on availability could be moderate to high should an exploit be discovered. No publicly known exploit has been reported.

Generated by OpenCVE AI on August 3, 2026 at 18:33 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the system kernel to the latest version that latches the disable_idle_d3 flag per device.
  • Verify that sysfs entries controlling disable_idle_d3 are not writable by unprivileged users and, if possible, restrict their permissions.
  • Implement runtime monitoring of the VFIO PCI driver's power‑management get/put operations to detect and log any imbalance.

Generated by OpenCVE AI on August 3, 2026 at 18:33 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4720-1 linux security update
Debian DLA Debian DLA DLA-4723-1 linux-6.1 security update
Debian DLA Debian DLA DLA-4724-1 linux-6.12 new package
History

Sun, 02 Aug 2026 12:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-668

Thu, 30 Jul 2026 12:15:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Low


Mon, 27 Jul 2026 05:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-668

Sat, 25 Jul 2026 09:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: vfio/pci: Latch disable_idle_d3 per device When disable_idle_d3 was introduced in vfio-pci, it directly manipulated the device power state with pci_set_power_state(). There were no refcounts to maintain or balanced operations, we could unconditionally bring the device to D0 and conditionally move it to D3hot. Therefore the module parameter was made writable. Later, in commit c61302aa48f7 ("vfio/pci: Move module parameters to vfio_pci.c"), as part of the vfio-pci-core split, the writable aspect of the module parameter was nullified. The parameter value could still be changed through sysfs, but the vfio-pci driver latched the values into vfio-pci-core globals at module init. Loading the vfio-pci module, or unloading and reloading, with non-default or different values could change the globals relative to existing devices bound to vfio-pci variant drivers. Runtime PM was introduced in commit 7ab5e10eda02 ("vfio/pci: Move the unused device into low power state with runtime PM"), which marks the point where power states became refcounted. PM get and put operations need to be balanced, but the same module operations noted above can change the global variables relative to those devices already bound to vfio-pci variant drivers. This introduces a window where PM operations can now become unbalanced. To resolve this with a narrow footprint for stable backports, the disable_idle_d3 flag is latched into the vfio_pci_core_device at the time of initialization, such that the device always operates with a consistent value. NB. vfio_pci_dev_set_try_reset() now unconditionally raises the runtime PM usage count around bus reset to account for disable_idle_d3 becoming a per-device rather than global flag. When this flag is set, the additional get/put pair is harmless and allows continued use of the shared vfio_pci_dev_set_pm_runtime_get() helper.
Title vfio/pci: Latch disable_idle_d3 per device
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-07-25T08:51:38.865Z

Reserved: 2026-07-19T15:36:31.791Z

Link: CVE-2026-64476

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-07-25T10:17:33.113

Modified: 2026-07-25T10:17:33.113

Link: CVE-2026-64476

cve-icon Redhat

Severity : Low

Publid Date: 2026-07-25T00:00:00Z

Links: CVE-2026-64476 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-03T18:45:17Z

Weaknesses

No weakness.