Skip to main content
← All vulnerabilities
CVE-2026-97948

powerpc/eeh: Fix recursive locking on devices without EEH sensitive driver

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 5.10.271, 5.15.222, 6.1.189, 6.6.158, 6.12.111, and 4 more
None on Exploit-DB, Metasploit or GitHub

Summary

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).

Timeline

  1. CVE published
  2. Record last updated

Affected versions

  • Linux Linux

    From 502f08831a9afb72dc98a56ae6504da43e93b250 · fixed in 3833dfae0680b6b16e2469fbc90aa48376311cd8; From f56e004b781719d8fdf6c9619b15caf2579bc1f2 · fixed in 24524fca27da674668941440e8e05cdfec0b0222; From 59c6d3d81d42bf543c90597b4f38c53d6874c5a1 · fixed in a58531181363219fa5de2b53d5d7274dcdfca98b; From a426e8a6ae161f51888585b065db0f8f93ab2e16 · fixed in 460fab22b65138531082910702f74b048b25237b; From d2c60a8a387e9fcc28447ef36c03f8e49fd052a6 · fixed in 102e3dc5ab5ba052e294819e83384166b242c1ec; From 1010b4c012b0d78dfb9d3132b49aa2ef024a07a7 · fixed in 2920af33d097ca335e492b346af70b72986ad6dc; From 1010b4c012b0d78dfb9d3132b49aa2ef024a07a7 · fixed in 85d8eaefc052cf3e5ae2c7bafeda2db68b8898b4; From 1010b4c012b0d78dfb9d3132b49aa2ef024a07a7 · fixed in c5e68706527968282e49de205cc2b935823cb88a; From 5.10.241 · fixed in 5.10.271; From 5.15.190 · fixed in 5.15.222; From 6.1.148 · fixed in 6.1.189; From 6.6.102 · fixed in 6.6.158; From 6.12.42 · fixed in 6.12.111; From 6.15.10 · fixed in 6.16; From 6.16.1 · fixed in 6.17

  • Linux Linux

    6.17

  • KernelLinux

    fixed in 5.10.271; From 5.11.0 · fixed in 5.15.222; From 5.16.0 · fixed in 6.1.189; From 6.2.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.111; From 6.13.0 · fixed in 6.18.53; From 6.17.0 · fixed in 7.2.7

References 8

git.kernel.org