Skip to main content

CVE-2024-50196: Vulnerability in Linux Linux

High
VulnerabilityCVE-2024-50196cvecve-2024-50196
Published: Fri Nov 08 2024 (11/08/2024, 05:54:10 UTC)
Source: CVE
Vendor/Project: Linux
Product: Linux

Description

In the Linux kernel, the following vulnerability has been resolved: pinctrl: ocelot: fix system hang on level based interrupts The current implementation only calls chained_irq_enter() and chained_irq_exit() if it detects pending interrupts. ``` for (i = 0; i < info->stride; i++) { uregmap_read(info->map, id_reg + 4 * i, &reg); if (!reg) continue; chained_irq_enter(parent_chip, desc); ``` However, in case of GPIO pin configured in level mode and the parent controller configured in edge mode, GPIO interrupt might be lowered by the hardware. In the result, if the interrupt is short enough, the parent interrupt is still pending while the GPIO interrupt is cleared; chained_irq_enter() never gets called and the system hangs trying to service the parent interrupt. Moving chained_irq_enter() and chained_irq_exit() outside the for loop ensures that they are called even when GPIO interrupt is lowered by the hardware. The similar code with chained_irq_enter() / chained_irq_exit() functions wrapping interrupt checking loop may be found in many other drivers: ``` grep -r -A 10 chained_irq_enter drivers/pinctrl ```

AI-Powered Analysis

AILast updated: 06/28/2025, 12:42:05 UTC

Technical Analysis

CVE-2024-50196 is a vulnerability identified in the Linux kernel's pinctrl subsystem, specifically affecting the 'ocelot' driver handling GPIO interrupts. The issue arises from improper handling of level-based interrupts in combination with a parent interrupt controller configured for edge-triggered interrupts. The current implementation only invokes the chained_irq_enter() and chained_irq_exit() functions when pending interrupts are detected within a loop iterating over interrupt registers. However, if a GPIO pin is configured in level mode and the parent controller in edge mode, a hardware-lowered interrupt can cause the parent interrupt to remain pending while the GPIO interrupt is cleared. This leads to a scenario where chained_irq_enter() is never called, causing the system to hang while servicing the parent interrupt. The fix involves moving the chained_irq_enter() and chained_irq_exit() calls outside the loop, ensuring they are always executed regardless of the interrupt state. This vulnerability is rooted in the interrupt handling logic and could potentially cause system hangs or denial of service conditions on affected Linux systems using the vulnerable pinctrl ocelot driver. No known exploits are currently reported in the wild, and no CVSS score has been assigned yet. The vulnerability affects specific Linux kernel versions identified by commit hashes, indicating it is a recent and targeted fix. Similar patterns of code exist in other drivers, suggesting the potential for analogous issues elsewhere if similar interrupt handling logic is used.

Potential Impact

For European organizations relying on Linux-based systems, particularly those using hardware platforms with the affected ocelot pinctrl driver (commonly found in embedded systems, network devices, or industrial controllers), this vulnerability could lead to system instability or complete hangs. This can disrupt critical services, especially in environments where uptime and reliability are paramount, such as telecommunications infrastructure, manufacturing automation, and critical IT services. The denial of service caused by system hangs could impact operational continuity, data processing, and availability of networked services. Since the vulnerability is related to low-level hardware interrupt handling, it may be exploited unintentionally through normal hardware operation or maliciously by triggering specific interrupt conditions, although exploitation complexity is moderate. The absence of known exploits reduces immediate risk, but the potential impact on availability is significant for affected deployments. Organizations running Linux kernels with this vulnerability on embedded or specialized hardware should consider the risk to service availability and system reliability.

Mitigation Recommendations

European organizations should prioritize updating their Linux kernel to the patched versions that address CVE-2024-50196 as soon as they become available from their distribution vendors or upstream Linux sources. For embedded or specialized hardware using the ocelot pinctrl driver, verify the kernel version and apply vendor-specific patches promptly. Additionally, organizations should audit their hardware configurations to identify if GPIO pins are configured in level mode with parent controllers in edge mode, as this combination triggers the vulnerability. Where possible, reconfiguring GPIO interrupt modes to avoid this mismatch can serve as a temporary mitigation. Monitoring system logs for unusual interrupt handling behavior or system hangs can help detect attempts to trigger this condition. For critical systems, implementing redundancy and failover mechanisms can mitigate the impact of potential system hangs. Finally, reviewing other drivers with similar interrupt handling patterns for analogous vulnerabilities is recommended to proactively address related risks.

Need more detailed analysis?Get Pro

Technical Details

Data Version
5.1
Assigner Short Name
Linux
Date Reserved
2024-10-21T19:36:19.968Z
Cisa Enriched
false
Cvss Version
null
State
PUBLISHED

Threat ID: 682d9823c4522896dcbdf49b

Added to database: 5/21/2025, 9:08:51 AM

Last enriched: 6/28/2025, 12:42:05 PM

Last updated: 7/31/2025, 3:31:17 AM

Views: 13

Actions

PRO

Updates to AI analysis are available only with a Pro account. Contact root@offseq.com for access.

Please log in to the Console to use AI analysis features.

Need enhanced features?

Contact root@offseq.com for Pro access with improved analysis and higher rate limits.

Latest Threats