CVE-2025-22031: PCI/bwctrl: Fix NULL pointer dereference on bus number exhaustion
In the Linux kernel, the following vulnerability has been resolved:
PCI/bwctrl: Fix NULL pointer dereference on bus number exhaustion
When BIOS neglects to assign bus numbers to PCI bridges, the kernel
attempts to correct that during PCI device enumeration. If it runs out
of bus numbers, no pci_bus is allocated and the "subordinate" pointer in
the bridge's pci_dev remains NULL.
The PCIe bandwidth controller erroneously does not check for a NULL
subordinate pointer and dereferences it on probe.
Bandwidth control of unusable devices below the bridge is of questionable
utility, so simply error out instead. This mirrors what PCIe hotplug does
since commit 62e4492c3063 ("PCI: Prevent NULL dereference during pciehp
probe").
The PCI core emits a message with KERN_INFO severity if it has run out of
bus numbers. PCIe hotplug emits an additional message with KERN_ERR
severity to inform the user that hotplug functionality is disabled at the
bridge. A similar message for bandwidth control does not seem merited,
given that its only purpose so far is to expose an up-to-date link speed
in sysfs and throttle the link speed on certain laptops with limited
Thermal Design Power. So error out silently.
User-visible messages:
pci 0000:16:02.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[...]
pci_bus 0000:45: busn_res: [bus 45-74] end is updated to 74
pci 0000:16:02.0: devices behind bridge are unusable because [bus 45-74] cannot be assigned for them
[...]
pcieport 0000:16:02.0: pciehp: Hotplug bridge without secondary bus, ignoring
[...]
BUG: kernel NULL pointer dereference
RIP: pcie_update_link_speed
pcie_bwnotif_enable
pcie_bwnotif_probe
pcie_port_probe_service
really_probe
Security readout for executives and security teams
Plain-English summary
CVE-2025-22031 is a Linux kernel availability flaw. On systems where firmware fails to assign PCI bus numbers and the kernel exhausts available bus numbers, PCIe bandwidth control can dereference a missing bridge pointer and crash the kernel. The business impact is service disruption, not data theft or privilege escalation based on the provided sources.
Executive priority
Treat as a moderate operational resilience issue. It does not indicate data compromise, but affected Linux systems can crash under specific PCIe enumeration conditions. Patch through normal kernel update channels, with faster handling for critical servers showing PCI bridge errors.
Technical view
The bug is a CWE-476 NULL pointer dereference in PCI/bwctrl. If no pci_bus is allocated for a bridge, pci_dev.subordinate remains NULL, but pcie_bwnotif_probe can reach pcie_update_link_speed without checking it. The fix errors out when subordinate is absent, mirroring PCIe hotplug handling.
Likely exposure
Exposure is limited to Linux systems running affected kernel versions with PCIe bridge enumeration problems caused by missing firmware-assigned bus numbers. The CVSS vector is local, low complexity, low privileges, no user interaction, and availability-only impact.
Exploitation context
The provided sources do not show active exploitation, and KEV is false. The described failure is local and availability-focused: a privileged local context or local device-enumeration condition could trigger a kernel NULL pointer dereference, causing a crash or denial of service.
Researcher notes
Evidence supports a narrow NULL dereference in Linux PCIe bandwidth notification probing. The source text names affected code paths and user-visible messages, but does not provide exploit details, affected distributions, or independent exploitation reports.
Mitigation direction
Update to a vendor kernel containing the referenced stable Linux fixes.
Prioritize affected Linux hosts where availability matters or PCIe bridge errors appear in logs.
Check distribution advisories before applying kernel updates in production.
If updates are unavailable, follow vendor guidance for temporary risk reduction.
Validation and detection
Inventory Linux kernel versions against vendor advisories for CVE-2025-22031.
Confirm the relevant stable fix commit is included in the running kernel package.
Review boot logs for PCI bridge bus assignment exhaustion messages.
Look for kernel NULL pointer dereference traces mentioning pcie_update_link_speed or pcie_bwnotif_probe.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-476: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-476 · source CWE mapping
NULL Pointer Dereference
NULL Pointer Dereference represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.