CVE-2024-58093

PCI/ASPM: Fix link state exit during switch upstream function removal

State
Published
Severity
Not scored
Published
Apr 16, 2025
Updated
Jul 16, 2026
Reserved
Mar 6, 2025

Read the record on cve.org

Description

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

PCI/ASPM: Fix link state exit during switch upstream function removal

Before 456d8aa37d0f ("PCI/ASPM: Disable ASPM on MFD function removal to avoid use-after-free"), we would free the ASPM link only after the last function on the bus pertaining to the given link was removed.

That was too late. If function 0 is removed before sibling function, link->downstream would point to free'd memory after.

After above change, we freed the ASPM parent link state upon any function removal on the bus pertaining to a given link.

That is too early. If the link is to a PCIe switch with MFD on the upstream port, then removing functions other than 0 first would free a link which still remains parent_link to the remaining downstream ports.

The resulting GPFs are especially frequent during hot-unplug, because pciehp removes devices on the link bus in reverse order.

On that switch, function 0 is the virtual P2P bridge to the internal bus. Free exactly when function 0 is removed -- before the parent link is obsolete, but after all subordinate links are gone.

[kwilczynski: commit log]

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 666e7f9d60cee23077ea3e6331f6f8a19f7ea03f to before 0a0f9aecf66b98959aab7fb5764b4b3e522f4f5bAffected
  • 7badf4d6f49a358a01ab072bbff88d3ee886c33b to before 62db339ecc3d58d8fd83a9e4d80061cd943bb6e2Affected
  • 9856c0de49052174ab474113f4ba40c02aaee086 to before e5cd58f61e9d8024ee11bd78c12c8916891d4077Affected
  • 7aecdd47910c51707696e8b0e045b9f88bd4230f to before cd4b07507794f7ad1a74e12eca75121d98187e66Affected
  • 456d8aa37d0f56fc9e985e812496e861dcd6f2f2 to before 8b930ddc2044e36866c41423e89889e0258695a3Affected
  • 456d8aa37d0f56fc9e985e812496e861dcd6f2f2 to before f556b6ba0ac5f8353287ce6ed761228f0b4fafb7Affected
  • 456d8aa37d0f56fc9e985e812496e861dcd6f2f2 to before ba4cdc14c0d4df00d3e99bff7fe545303db98183Affected
  • 456d8aa37d0f56fc9e985e812496e861dcd6f2f2 to before 4d96930239981f312821a4065db8cc0f8240a173Affected
  • 456d8aa37d0f56fc9e985e812496e861dcd6f2f2 to before cbf937dcadfd571a434f8074d057b32cd14fbea5Affected
  • d51d2eeae4ce54d542909c4d9d07bf371a78592cAffected
  • 4203722d51afe3d239e03f15cc73efdf023a7103Affected
  • 5.4.251 to before 5.4.292Affected
  • 5.10.188 to before 5.10.236Affected
  • 5.15.121 to before 5.15.180Affected
  • 6.1.39 to before 6.1.134Affected
  • 6.3.13 to before 6.4Affected
  • 6.4.4 to before 6.5Affected
LinuxLinux
  • 6.5Affected
  • before 6.5Not affected
  • 5.4.292 through 5.4.*Not affected
  • 5.10.236 through 5.10.*Not affected
  • 5.15.180 through 5.15.*Not affected
  • 6.1.134 through 6.1.*Not affected
  • 6.6.87 through 6.6.*Not affected
  • 6.12.23 through 6.12.*Not affected
  • 6.13.11 through 6.13.*Not affected
  • 6.14.2 through 6.14.*Not affected
  • 6.15 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.