Description
In the Linux kernel, the following vulnerability has been resolved: pds_core: fix deadlock between reset thread and remove pci_reset_function() acquires device_lock before performing the reset. pdsc_remove() is called by the PCI core with device_lock already held. If pdsc_pci_reset_thread() is running when pdsc_remove() is called, destroy_workqueue() will block waiting for the work to complete, while the work is blocked waiting for device_lock - deadlock. Use pci_try_reset_function() which uses pci_dev_trylock() internally. This acquires both the device lock and the PCI config access lock without blocking - if either lock is contended, it returns -EAGAIN immediately. This avoids the deadlock while also ensuring proper config space access serialization during the reset. The pci_dev_get/put calls are also removed as they were unnecessary - the driver-owned workqueue is destroyed in pdsc_remove(), guaranteeing the work completes before remove returns. The PCI core holds its reference to pci_dev throughout the entire unbind sequence.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
81665adf25d28a00a986533f1d3a5df76b79cad9 to < 90d9f3ef28843e6c35149324b8eefb427a7435c2affected81665adf25d28a00a986533f1d3a5df76b79cad9 to < 19ef775c91c6bf4bd2b60f6616f4e28b621cdd6aaffected81665adf25d28a00a986533f1d3a5df76b79cad9 to < 54f905821f26d385fba407a920b51f0a752c76dcaffected81665adf25d28a00a986533f1d3a5df76b79cad9 to < ab0eec0ff0a421737a37f510ceab5c6ea59cd05aaffected38407914d48273d7f8ab765b9243658afe1c3ab6affected6.8.7 to < 6.9affected
Linux Linux
Default version status: affected
6.9affected0 to < 6.9unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected