Description
In the Linux kernel, the following vulnerability has been resolved:

iio: adc: lpc32xx: Initialize completion before requesting IRQ

In the report from Jaeyoung Chung:

"lpc32xx_adc_probe() in drivers/iio/adc/lpc32xx_adc.c registers its
interrupt handler with devm_request_irq() before it initializes
st->completion with init_completion(). If an interrupt arrives after
devm_request_irq() and before init_completion(), the handler calls
complete() on an uninitialized completion, causing a kernel panic.

The probe path, in lpc32xx_adc_probe():

iodev = devm_iio_device_alloc(&pdev->dev, sizeof(*st)); /* st kzalloc-zeroed */
...
retval = devm_request_irq(&pdev->dev, irq, lpc32xx_adc_isr, 0,
LPC32XXAD_NAME, st); /* register handler */
...
init_completion(&st->completion); /* initialize completion */

lpc32xx_adc_isr() calls complete():

complete(&st->completion);

If the device raises an interrupt before init_completion() runs,
complete() acquires the uninitialized wait.lock and walks the zeroed
task_list in swake_up_locked(). The zeroed task_list makes list_empty()
return false, so swake_up_locked() dereferences a NULL list entry,
triggering a KASAN wild-memory-access."

Fix the chance of a spurious IRQ causing an uninitialized pointer
dereference by moving init_completion() above devm_request_irq().
Published: 2026-07-25
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

During the probe of the LPC32xx ADC driver in the Linux kernel, the interrupt handler is registered before its completion object is initialized. If the device generates an interrupt before the completion is set up, the handler calls complete() on an uninitialized structure. This causes the kernel’s address sanity checker to detect a wild memory access, leading to a kernel panic and a system crash. The flaw is a use‑of‑uninitialized-object vulnerability and manifests as a denial‑of‑service condition when the driver is loaded.

Affected Systems

Any Linux kernel that contains the original lpc32xx ADC driver source located in drivers/iio/adc/lpc32xx_adc.c may be affected. Since the repository does not provide a specific version list, the defect could exist in any kernel release that has not yet reordered init_completion() to precede devm_request_irq(), particularly on systems using LPC32xx family hardware where the driver is enabled.

Risk and Exploitability

Exploitation requires an interrupt to fire during a very brief window while the driver is being probed. This is not a trivial attack and would normally need an adversary with control over hardware configuration or the ability to trigger interrupts at precise timing, i.e., local privilege or specific device access. The EPSS score is below 1%, and the vulnerability is not listed in CISA’s KEV catalog, indicating a low likelihood of widespread exploitation. The risk is therefore a localized denial‑of‑service via system crash rather than a widespread remote attack vector. However, the impact of a kernel panic is severe, so the issue should be remediated promptly.

Generated by OpenCVE AI on August 3, 2026 at 18:26 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to a kernel revision that moves init_completion() before devm_request_irq()
  • If a backport patch is available from your distribution, apply it to reorder init_completion()
  • If no patch or upgrade is possible, disable or unload the lpc32xx ADC driver, or remove the associated hardware until a fix is applied

Generated by OpenCVE AI on August 3, 2026 at 18:26 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4717-1 linux security update
Debian DLA Debian DLA DLA-4720-1 linux security update
Debian DLA Debian DLA DLA-4723-1 linux-6.1 security update
Debian DLA Debian DLA DLA-4724-1 linux-6.12 new package
History

Mon, 03 Aug 2026 18:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-457

Mon, 03 Aug 2026 12:15:00 +0000


Sat, 25 Jul 2026 09:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: iio: adc: lpc32xx: Initialize completion before requesting IRQ In the report from Jaeyoung Chung: "lpc32xx_adc_probe() in drivers/iio/adc/lpc32xx_adc.c registers its interrupt handler with devm_request_irq() before it initializes st->completion with init_completion(). If an interrupt arrives after devm_request_irq() and before init_completion(), the handler calls complete() on an uninitialized completion, causing a kernel panic. The probe path, in lpc32xx_adc_probe(): iodev = devm_iio_device_alloc(&pdev->dev, sizeof(*st)); /* st kzalloc-zeroed */ ... retval = devm_request_irq(&pdev->dev, irq, lpc32xx_adc_isr, 0, LPC32XXAD_NAME, st); /* register handler */ ... init_completion(&st->completion); /* initialize completion */ lpc32xx_adc_isr() calls complete(): complete(&st->completion); If the device raises an interrupt before init_completion() runs, complete() acquires the uninitialized wait.lock and walks the zeroed task_list in swake_up_locked(). The zeroed task_list makes list_empty() return false, so swake_up_locked() dereferences a NULL list entry, triggering a KASAN wild-memory-access." Fix the chance of a spurious IRQ causing an uninitialized pointer dereference by moving init_completion() above devm_request_irq().
Title iio: adc: lpc32xx: Initialize completion before requesting IRQ
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-07-25T08:51:56.053Z

Reserved: 2026-07-19T15:36:31.793Z

Link: CVE-2026-64500

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-07-25T10:17:35.957

Modified: 2026-07-25T10:17:35.957

Link: CVE-2026-64500

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-07-25T00:00:00Z

Links: CVE-2026-64500 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-03T18:30:06Z

Weaknesses
  • CWE-457

    Use of Uninitialized Variable