Skip to content
CVE PROGRAM SOURCE RECORDUnscored

CVE-2021-47617

PCI: pciehp: Fix infinite loop in IRQ handler upon power fault

Description

In the Linux kernel, the following vulnerability has been resolved: PCI: pciehp: Fix infinite loop in IRQ handler upon power fault The Power Fault Detected bit in the Slot Status register differs from all other hotplug events in that it is sticky: It can only be cleared after turning off slot power. Per PCIe r5.0, sec. 6.7.1.8: If a power controller detects a main power fault on the hot-plug slot, it must automatically set its internal main power fault latch [...]. The main power fault latch is cleared when software turns off power to the hot-plug slot. The stickiness used to cause interrupt storms and infinite loops which were fixed in 2009 by commits 5651c48cfafe ("PCI pciehp: fix power fault interrupt storm problem") and 99f0169c17f3 ("PCI: pciehp: enable software notification on empty slots"). Unfortunately in 2020 the infinite loop issue was inadvertently reintroduced by commit 8edf5332c393 ("PCI: pciehp: Fix MSI interrupt race"): The hardirq handler pciehp_isr() clears the PFD bit until pciehp's power_fault_detected flag is set. That happens in the IRQ thread pciehp_ist(), which never learns of the event because the hardirq handler is stuck in an infinite loop. Fix by setting the power_fault_detected flag already in the hardirq handler.

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

  • a8cc52270f3d8e8f4faf01ffd6c4a95bbfb55ba4 to < ff27f7d0333cff89ec85c419f431aca1b38fb16aaffected
  • 4667358dab9cc07da044d5bc087065545b1000df to < 464da38ba827f670deac6500a1de9a4f0f44c41daffected
  • 8edf5332c39340b9583cf9cba659eb7ec71f75b5 to < 3b4c966fb156ff3e70b2526d964952ff7c1574d9affected
  • 8edf5332c39340b9583cf9cba659eb7ec71f75b5 to < 1db58c6584a72102e98af2e600ea184ddaf2b8afaffected
  • 8edf5332c39340b9583cf9cba659eb7ec71f75b5 to < 6d6f1f0dac3e3441ecdb1103d4efb11b9ed24dd5affected
  • 8edf5332c39340b9583cf9cba659eb7ec71f75b5 to < 23584c1ed3e15a6f4bfab8dc5a88d94ab929ee12affected
  • 4.19.149 to < 4.19.233affected
  • 5.4.69 to < 5.4.177affected

Linux Linux

Default version status: affected

  • 5.7affected
  • 0 to < 5.7unaffected
  • 4.19.233 to ≤ 4.19.*unaffected
  • 5.4.177 to ≤ 5.4.*unaffected
  • 5.10.97 to ≤ 5.10.*unaffected
  • 5.15.20 to ≤ 5.15.*unaffected
  • 5.16.6 to ≤ 5.16.*unaffected
  • 5.17 to ≤ *unaffected

References