CVE-2025-38624

PCI: pnv_php: Clean up allocated IRQs on unplug

State
Published
Severity
Not scored
Published
Aug 22, 2025
Updated
May 11, 2026
Reserved
Apr 16, 2025

Read the record on cve.org

Description

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

PCI: pnv_php: Clean up allocated IRQs on unplug

When the root of a nested PCIe bridge configuration is unplugged, the pnv_php driver leaked the allocated IRQ resources for the child bridges' hotplug event notifications, resulting in a panic.

Fix this by walking all child buses and deallocating all its IRQ resources before calling pci_hp_remove_devices().

Also modify the lifetime of the workqueue at struct pnv_php_slot::wq so that it is only destroyed in pnv_php_free_slot(), instead of pnv_php_disable_irq(). This is required since pnv_php_disable_irq() will now be called by workers triggered by hot unplug interrupts, so the workqueue needs to stay allocated.

The abridged kernel panic that occurs without this patch is as follows:

WARNING: CPU: 0 PID: 687 at kernel/irq/msi.c:292 msi_device_data_release+0x6c/0x9c CPU: 0 UID: 0 PID: 687 Comm: bash Not tainted 6.14.0-rc5+ #2 Call Trace: msi_device_data_release+0x34/0x9c (unreliable) release_nodes+0x64/0x13c devres_release_all+0xc0/0x140 device_del+0x2d4/0x46c pci_destroy_dev+0x5c/0x194 pci_hp_remove_devices+0x90/0x128 pci_hp_remove_devices+0x44/0x128 pnv_php_disable_slot+0x54/0xd4 power_write_file+0xf8/0x18c pci_slot_attr_store+0x40/0x5c sysfs_kf_write+0x64/0x78 kernfs_fop_write_iter+0x1b0/0x290 vfs_write+0x3bc/0x50c ksys_write+0x84/0x140 system_call_exception+0x124/0x230 system_call_vectored_common+0x15c/0x2ec

[bhelgaas: tidy comments]

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 360aebd85a4c946764f6301d68de2a817fad5159 to before 8c1ad4af160691e157d688ad9619ced2df556aacAffected
  • 360aebd85a4c946764f6301d68de2a817fad5159 to before 912e200240b6f9758f0b126e64a61c9227f4ad37Affected
  • 360aebd85a4c946764f6301d68de2a817fad5159 to before 398170b7fd0e0db2f8096df5206c75e5ff41415aAffected
  • 360aebd85a4c946764f6301d68de2a817fad5159 to before 32173edf3fe2d447e14e5e3b299387c6f9602a88Affected
  • 360aebd85a4c946764f6301d68de2a817fad5159 to before 28aa3cfce12487614219e7667ec84424e1f43227Affected
  • 360aebd85a4c946764f6301d68de2a817fad5159 to before 1773c19fa55e944cdd2634e2d9e552f87f2d38d5Affected
  • 360aebd85a4c946764f6301d68de2a817fad5159 to before bbd302c4b79df10197ffa7270ca3aa572eeca33cAffected
  • 360aebd85a4c946764f6301d68de2a817fad5159 to before 4668619092554e1b95c9a5ac2941ca47ba6d548aAffected
LinuxLinux
  • 4.9Affected
  • before 4.9Not affected
  • 5.10.241 through 5.10.*Not affected
  • 5.15.190 through 5.15.*Not affected
  • 6.1.148 through 6.1.*Not affected
  • 6.6.102 through 6.6.*Not affected
  • 6.12.42 through 6.12.*Not affected
  • 6.15.10 through 6.15.*Not affected
  • 6.16.1 through 6.16.*Not affected
  • 6.17 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.