CVE-2024-35968 Information
Description
In the Linux kernel the following vulnerability has been resolved:
pds_core: Fix pdsc_check_pci_health function to use work thread
When the driver notices fw_status == 0xff it tries to perform a PCI reset on itself via pci_reset_function() in the context of the driver’s health thread. However pdsc_reset_prepare calls pdsc_stop_health_thread() which attempts to stop/flush the health thread. This results in a deadlock because the stop/flush will never complete since the driver called pci_reset_function() from the health thread context. Fix by changing the pdsc_check_pci_health_function() to queue a newly introduced pdsc_pci_reset_thread() on the pdsc’s work queue.
Unloading the driver in the fw_down/dead state uncovered another issue which can be seen in the following trace:
WARNING: CPU: 51 PID: 6914 at kernel/workqueue.c:1450 __queue_work+0x358/0x440
[…]
RIP: 0010:__queue_work+0x358/0x440
[…]
Call Trace:
Fix this by preventing the devcmd reset if the FW is not running.
Reference
https://git.kernel.org/stable/c/38407914d48273d7f8ab765b9243658afe1c3ab6 https://git.kernel.org/stable/c/81665adf25d28a00a986533f1d3a5df76b79cad9
Share on: