CVE-2024-50196: pinctrl: ocelot: fix system hang on level based interrupts
In the Linux kernel, the following vulnerability has been resolved:
pinctrl: ocelot: fix system hang on level based interrupts
The current implementation only calls chainedirqenter() and chainedirqexit() if it detects pending interrupts.
for (i = 0; i < info->stride; i++) { uregmapread(info->map, idreg + 4 i, ®); if (!reg) continue;
chainedirqenter(parentchip, 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; chainedirqenter() never gets called and the system hangs trying to service the parent interrupt.
Moving chainedirqenter() and chainedirqexit() outside the for loop ensures that they are called even when GPIO interrupt is lowered by the hardware.
The similar code with chainedirqenter() / chainedirqexit() functions wrapping interrupt checking loop may be found in many other drivers: grep -r -A 10 chainedirqenter drivers/pinctrl
Other sources
This CVE was automatically created from a reference found in an email or other text. If you are reading this, then this CVE entry is probably erroneous, since this text should be replaced by the official CVE description automatically.
— Launchpad
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 6.1.129-1Fixed in 6.1.135-1Fixed in 6.12.25-1 - Upgrade
Upgrade
debian/linux-6.1to a version that resolves this vulnerability.Fixed in 6.1.129-1~deb11u1 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 5.15.173.1-1 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 6.6.64.2-1
Event History
Frequently Asked Questions
What is the severity of CVE-2024-50196?
CVE-2024-50196 has been assigned a critical severity level due to its potential to cause system hang during interrupt handling in the Linux kernel.
How do I fix CVE-2024-50196?
To fix CVE-2024-50196, users should update their Linux kernel to the latest version that includes the fix for this vulnerability.
Which Linux kernel versions are affected by CVE-2024-50196?
CVE-2024-50196 affects Linux kernel versions from 5.15.169 up to, but not including, 6.1.114 and several specific versions up to 6.12-rc3.
What type of vulnerability is CVE-2024-50196?
CVE-2024-50196 is a kernel vulnerability specifically related to the handling of level-based interrupts in the Linux kernel.
Is there a known exploit for CVE-2024-50196?
As of now, there is no widely known exploit for CVE-2024-50196, but users are advised to apply the fix to prevent potential exploits.