Analyzed
Published: 16 Apr 2025, 14:11
Last modified:23 May 2026, 15:56

Vulnerability Summary

Overall Risk (default)
medium
31/100
CVSS Score
7.8 HIGH
v3.1 (nvd)
EPSS Score
0.02% LOW
0% probability 0.00%
KEV
Not listed
Ransomware
No reports
Public exploits
None found
Dark Web
Not detected

Timeline

16 Apr 2025, 14:11
Published
Vulnerability first disclosed
23 May 2026, 15:56
Last Modified
Vulnerability information updated

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]

CVSS Metrics

  • v3.1HIGHScore: 7.8CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

EPSS Trends

Current EPSS score: 0.02% Percentile: 5%

Techniques & Countermeasures

  • CWE-416Use After Free

    The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory "belongs" to the code that operates on the new pointer.

Affected Systems

  • linuxlinux

    ≥ 456d8aa37d0f56fc9e985e812496e861dcd6f2f2, < cbf937dcadfd571a434f8074d057b32cd14fbea5 | 666e7f9d60cee23077ea3e6331f6f8a19f7ea03f | 7badf4d6f49a358a01ab072bbff88d3ee886c33b | 9856c0de49052174ab474113f4ba40c02aaee086 | 7aecdd47910c51707696e8b0e045b9f88bd4230f | d51d2eeae4ce54d542909c4d9d07bf371a78592c | 4203722d51afe3d239e03f15cc73efdf023a7103 | ≥ 5.4.251, < 5.5 | ≥ 5.10.188, < 5.11 | ≥ 5.15.121, < 5.16 | ≥ 6.1.39, < 6.2 | ≥ 6.3.13, < 6.4 | ≥ 6.4.4, < 6.5 | 6.5

  • linuxlinux_kernel

    ≥ 5.4.251, < 5.5 | ≥ 5.10.188, < 5.11 | ≥ 5.15.121, < 5.16 | ≥ 6.1.39, < 6.2 | ≥ 6.3.13, < 6.4 | ≥ 6.4.4, < 6.15

References (1)