Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: powerpc/eeh: Fix recursive locking on devices without EEH sensitive driver The commit 1010b4c012b0 ("powerpc/eeh: Make EEH driver device hotplug safe") refactored the EEH code such that the pci_rescan_remove_lock is held at the beginning of eeh_handle_normal_event() and the eeh_reset_device() is called with that lock being held. Looks like the commit missed to remove the existing lock/unlock inside eeh_rmv_device() which is no longer necessary. This is causing the eehd to hang on the lock which it actually holds when that code path is taken. [<0>] 0xc00000011c78f870 [<0>] __switch_to+0xfc/0x1a0 [<0>] pci_lock_rescan_remove+0x30/0x44 [<0>] eeh_rmv_device+0x290/0x2e0 [<0>] eeh_pe_dev_traverse+0x80/0x130 [<0>] eeh_reset_device+0xcc/0x23c [<0>] eeh_handle_normal_event+0x830/0xa80 [<0>] eeh_event_handler+0xf8/0x190 [<0>] kthread+0x194/0x1b0 [<0>] start_kernel_thread+0x14/0x18 The issue is seen for cases where the errors are detected on the PHB directly AND|OR for devices where the driver error_detected() returns PCI_ERS_RESULT_NEED_RESET, and driver being not EEH sensitive(i.e no error handlers like slot_reset(), resume() etc defined).
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected 502f08831a9afb72dc98a56ae6504da43e93b250 before 3833dfae0680b6b16e2469fbc90aa48376311cd8; affected f56e004b781719d8fdf6c9619b15caf2579bc1f2 before 24524fca27da674668941440e8e05cdfec0b0222; affected 59c6d3d81d42bf543c90597b4f38c53d6874c5a1 before a58531181363219fa5de2b53d5d7274dcdfca98b; affected a426e8a6ae161f51888585b065db0f8f93ab2e16 before 460fab22b65138531082910702f74b048b25237b; affected d2c60a8a387e9fcc28447ef36c03f8e49fd052a6 before 102e3dc5ab5ba052e294819e83384166b242c1ec; affected 1010b4c012b0d78dfb9d3132b49aa2ef024a07a7 before 2920af33d097ca335e492b346af70b72986ad6dc; affected 1010b4c012b0d78dfb9d3132b49aa2ef024a07a7 before 85d8eaefc052cf3e5ae2c7bafeda2db68b8898b4; affected 1010b4c012b0d78dfb9d3132b49aa2ef024a07a7 before c5e68706527968282e49de205cc2b935823cb88a; affected d42bbd8f30ac38b1ce54715bf08ec3dac18d6b25; affected 19d5036e7ad766cf212aebec23b9f1d7924a62bc; affected 5.10.241 before 5.10.271; affected 5.15.190 before 5.15.222; affected 6.1.148 before 6.1.189; affected 6.6.102 before 6.6.158; affected 6.12.42 before 6.12.111; affected 6.15.10 before 6.16; affected 6.16.1 before 6.17 |
| Linux / Linux | affected 6.17; unaffected 0 before 6.17; unaffected 5.10.271 through 5.10.*; unaffected 5.15.222 through 5.15.*; unaffected 6.1.189 through 6.1.*; unaffected 6.6.158 through 6.6.*; unaffected 6.12.111 through 6.12.*; unaffected 6.18.53 through 6.18.*; unaffected 7.2.7 through 7.2.*; unaffected 7.3 through * |
CWE
No CWE identifiers supplied.
References
- https://git.kernel.org/stable/c/3833dfae0680b6b16e2469fbc90aa48376311cd8
- https://git.kernel.org/stable/c/24524fca27da674668941440e8e05cdfec0b0222
- https://git.kernel.org/stable/c/a58531181363219fa5de2b53d5d7274dcdfca98b
- https://git.kernel.org/stable/c/460fab22b65138531082910702f74b048b25237b
- https://git.kernel.org/stable/c/102e3dc5ab5ba052e294819e83384166b242c1ec
- https://git.kernel.org/stable/c/2920af33d097ca335e492b346af70b72986ad6dc
- https://git.kernel.org/stable/c/85d8eaefc052cf3e5ae2c7bafeda2db68b8898b4
- https://git.kernel.org/stable/c/c5e68706527968282e49de205cc2b935823cb88a