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]
Product status
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 8c1ad4af160691e157d688ad9619ced2df556aac
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 912e200240b6f9758f0b126e64a61c9227f4ad37
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 398170b7fd0e0db2f8096df5206c75e5ff41415a
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 32173edf3fe2d447e14e5e3b299387c6f9602a88
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 28aa3cfce12487614219e7667ec84424e1f43227
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 1773c19fa55e944cdd2634e2d9e552f87f2d38d5
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before bbd302c4b79df10197ffa7270ca3aa572eeca33c
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 4668619092554e1b95c9a5ac2941ca47ba6d548a
5.10.241
5.15.190
6.1.148
6.6.102
6.12.42
6.15.10
6.16.1
6.17
References
git.kernel.org/...c/8c1ad4af160691e157d688ad9619ced2df556aac
git.kernel.org/...c/912e200240b6f9758f0b126e64a61c9227f4ad37
git.kernel.org/...c/398170b7fd0e0db2f8096df5206c75e5ff41415a
git.kernel.org/...c/32173edf3fe2d447e14e5e3b299387c6f9602a88
git.kernel.org/...c/28aa3cfce12487614219e7667ec84424e1f43227
git.kernel.org/...c/1773c19fa55e944cdd2634e2d9e552f87f2d38d5
git.kernel.org/...c/bbd302c4b79df10197ffa7270ca3aa572eeca33c
git.kernel.org/...c/4668619092554e1b95c9a5ac2941ca47ba6d548a