CVE-2021-47617

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

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*

History

18 Sep 2024, 17:46

Type Values Removed Values Added
CWE CWE-835
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
First Time Linux
Linux linux Kernel
References () https://git.kernel.org/stable/c/1db58c6584a72102e98af2e600ea184ddaf2b8af - () https://git.kernel.org/stable/c/1db58c6584a72102e98af2e600ea184ddaf2b8af - Patch
References () https://git.kernel.org/stable/c/23584c1ed3e15a6f4bfab8dc5a88d94ab929ee12 - () https://git.kernel.org/stable/c/23584c1ed3e15a6f4bfab8dc5a88d94ab929ee12 - Patch
References () https://git.kernel.org/stable/c/3b4c966fb156ff3e70b2526d964952ff7c1574d9 - () https://git.kernel.org/stable/c/3b4c966fb156ff3e70b2526d964952ff7c1574d9 - Patch
References () https://git.kernel.org/stable/c/464da38ba827f670deac6500a1de9a4f0f44c41d - () https://git.kernel.org/stable/c/464da38ba827f670deac6500a1de9a4f0f44c41d - Patch
References () https://git.kernel.org/stable/c/6d6f1f0dac3e3441ecdb1103d4efb11b9ed24dd5 - () https://git.kernel.org/stable/c/6d6f1f0dac3e3441ecdb1103d4efb11b9ed24dd5 - Patch
References () https://git.kernel.org/stable/c/ff27f7d0333cff89ec85c419f431aca1b38fb16a - () https://git.kernel.org/stable/c/ff27f7d0333cff89ec85c419f431aca1b38fb16a - Patch

20 Jun 2024, 12:43

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: PCI: pciehp: soluciona el bucle infinito en el controlador IRQ ante un fallo de alimentación. El bit de fallo de alimentación detectado en el registro de estado de la ranura se diferencia de todos los demás eventos de conexión en caliente en que es fijo: solo puede borrarse después de apagar la alimentación de la ranura. Por PCIe r5.0, seg. 6.7.1.8: Si un controlador de energía detecta una falla de energía principal en la ranura de conexión en caliente, debe configurar automáticamente su pestillo interno de falla de energía principal [...]. El bloqueo de fallo de alimentación principal se borra cuando el software corta la alimentación a la ranura de conexión en caliente. La rigidez solía causar tormentas de interrupción y bucles infinitos que se solucionaron en 2009 mediante los commits 5651c48cfafe ("PCI pciehp: solucionar el problema de la tormenta de interrupción por falla de energía") y 99f0169c17f3 ("PCI: pciehp: habilitar la notificación de software en ranuras vacías"). Desafortunadamente, en 2020, el problema del bucle infinito se reintrodujo inadvertidamente mediante el commit 8edf5332c393 ("PCI: pciehp: arreglar carrera de interrupción MSI"): el controlador hardirq pciehp_isr() borra el bit PFD hasta que se establece el indicador power_fault_detected de pciehp. Eso sucede en el hilo IRQ pciehp_ist(), que nunca se entera del evento porque el controlador hardirq está atrapado en un bucle infinito. Para solucionarlo, configure el indicador power_fault_detected que ya está en el controlador hardirq.

20 Jun 2024, 11:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-06-20 11:15

Updated : 2024-09-18 17:46


NVD link : CVE-2021-47617

Mitre link : CVE-2021-47617

CVE.ORG link : CVE-2021-47617


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-835

Loop with Unreachable Exit Condition ('Infinite Loop')