Improper Check for Unusual or Exceptional Conditions Affecting kernel-default-base package, versions <6.4.0-150600.23.30.1.150600.12.12.6


Severity

Recommended
0.0
medium
0
10

Based on SUSE Linux Enterprise Server security rating.

Threat Intelligence

EPSS
0.05% (18th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk IDSNYK-SLES156-KERNELDEFAULTBASE-8513383
  • published14 Dec 2024
  • disclosed13 Dec 2024

Introduced: 13 Dec 2024

NewCVE-2024-50196  (opens in a new tab)
CWE-754  (opens in a new tab)

How to fix?

Upgrade SLES:15.6 kernel-default-base to version 6.4.0-150600.23.30.1.150600.12.12.6 or higher.

NVD Description

Note: Versions mentioned in the description apply only to the upstream kernel-default-base package and not the kernel-default-base package as distributed by SLES. See How to fix? for SLES:15.6 relevant fixed versions and status.

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 &lt; info-&gt;stride; i++) {
    uregmap_read(info-&gt;map, id_reg + 4 * i, &amp;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

CVSS Scores

version 3.1