AUGUST 24, 2026
Live Feed
Back to database
Case File

CVE-2026-64602

UNKNOWN · CVSS N/A EPSS 0.16%

Source: NVD + CISA KEV + EPSS · Published 2026-08-06 · Last synced 2026-08-24

CyberRota Analysis

AI-Generated

The vulnerability affects the Linux kernel's handling of interrupts in the spear_adc_probe() function, where the interrupt handler is registered before the completion structure is initialized. This flaw can lead to a kernel panic if an interrupt occurs between these two operations, resulting in a dereference of an uninitialized pointer. Organizations utilizing affected Linux kernel versions, particularly those deploying devices with the spear ADC driver, should prioritize this issue to prevent potential system crashes and instability.

CVE
CVE-2026-64602
Severity
UNKNOWN
CVSS
N/A
EPSS
0.16%
Linux

Original NVD Description

In the Linux kernel, the following vulnerability has been resolved: iio: adc: spear: Initialize completion before requesting IRQ In the report from Jaeyoung Chung: "spear_adc_probe() in drivers/iio/adc/spear_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 spear_adc_probe(): iodev = devm_iio_device_alloc(&pdev->dev, sizeof(*st)); /* st kzalloc-zeroed */ ... retval = devm_request_irq(&pdev->dev, irq, spear_adc_isr, 0, LPC32XXAD_NAME, st); /* register handler */ ... init_completion(&st->completion); /* initialize completion */ spear_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().