CVE-2024-50196
Linux Kernel Pinctrl Ocelot Improper Interrupt Handling Vulnerability
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, ®); 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 ```
INFO
Published Date :
Nov. 8, 2024, 6:15 a.m.
Last Modified :
Nov. 29, 2024, 8:28 p.m.
Source :
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Remotely Exploitable :
No
Impact Score :
3.6
Exploitability Score :
1.8
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2024-50196
.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2024-50196
vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2024-50196
vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
Initial Analysis by [email protected]
Nov. 29, 2024
Action Type Old Value New Value Added CVSS V3.1 NIST AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H Added CWE NIST CWE-754 Added CPE Configuration OR *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions up to (excluding) 5.15.169 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.16 up to (excluding) 6.1.114 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.2 up to (excluding) 6.6.58 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.7 up to (excluding) 6.11.5 *cpe:2.3:o:linux:linux_kernel:6.12:rc1:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:6.12:rc2:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:6.12:rc3:*:*:*:*:*:* Changed Reference Type https://git.kernel.org/stable/c/20728e86289ab463b99b7ab4425515bd26aba417 No Types Assigned https://git.kernel.org/stable/c/20728e86289ab463b99b7ab4425515bd26aba417 Patch Changed Reference Type https://git.kernel.org/stable/c/4a81800ef05bea5a9896f199677f7b7f5020776a No Types Assigned https://git.kernel.org/stable/c/4a81800ef05bea5a9896f199677f7b7f5020776a Patch Changed Reference Type https://git.kernel.org/stable/c/655f5d4662b958122b260be05aa6dfdf8768efe6 No Types Assigned https://git.kernel.org/stable/c/655f5d4662b958122b260be05aa6dfdf8768efe6 Patch Changed Reference Type https://git.kernel.org/stable/c/93b8ddc54507a227087c60a0013ed833b6ae7d3c No Types Assigned https://git.kernel.org/stable/c/93b8ddc54507a227087c60a0013ed833b6ae7d3c Patch Changed Reference Type https://git.kernel.org/stable/c/dcbe9954634807ec54e22bde278b5b269f921381 No Types Assigned https://git.kernel.org/stable/c/dcbe9954634807ec54e22bde278b5b269f921381 Patch -
CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Nov. 08, 2024
Action Type Old Value New Value Added 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, ®); 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 ``` Added Reference kernel.org https://git.kernel.org/stable/c/655f5d4662b958122b260be05aa6dfdf8768efe6 [No types assigned] Added Reference kernel.org https://git.kernel.org/stable/c/4a81800ef05bea5a9896f199677f7b7f5020776a [No types assigned] Added Reference kernel.org https://git.kernel.org/stable/c/20728e86289ab463b99b7ab4425515bd26aba417 [No types assigned] Added Reference kernel.org https://git.kernel.org/stable/c/dcbe9954634807ec54e22bde278b5b269f921381 [No types assigned] Added Reference kernel.org https://git.kernel.org/stable/c/93b8ddc54507a227087c60a0013ed833b6ae7d3c [No types assigned]
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2024-50196
is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2024-50196
weaknesses.