CVE-2026-64602

iio: adc: spear: Initialize completion before requesting IRQ

State
Published
Severity
Not scored
Published
Aug 6, 2026
Updated
Aug 17, 2026
Reserved
Jul 19, 2026

Read the record on cve.org

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().

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • b586e5d9eee038b8ee6f846cdb6cf2fcbcb2f4ed to before aea8ae6c4d3ed58d9223360f758df6bd8b90c608Affected
  • b586e5d9eee038b8ee6f846cdb6cf2fcbcb2f4ed to before 67a49ab41320b3f721ce4be7447754ff040acbd5Affected
  • b586e5d9eee038b8ee6f846cdb6cf2fcbcb2f4ed to before a50757398794aaa25f908b96c6733e045466cba4Affected
  • b586e5d9eee038b8ee6f846cdb6cf2fcbcb2f4ed to before f3f90bc7b38ba3ff14f131cea0f8eb77624787a8Affected
  • b586e5d9eee038b8ee6f846cdb6cf2fcbcb2f4ed to before 37077d8271b1f24894fbc21bca1c4cd337525d31Affected
  • b586e5d9eee038b8ee6f846cdb6cf2fcbcb2f4ed to before bbfebae473ac2c8a194523b29ccb9b45f02f134cAffected
  • b586e5d9eee038b8ee6f846cdb6cf2fcbcb2f4ed to before eb5b07c9d0ec1a9d4b6871b14793c19967d79dc4Affected
  • b586e5d9eee038b8ee6f846cdb6cf2fcbcb2f4ed to before 3ee2128b6f0eb0be7b6cb8f6e0f1f113a65201a0Affected
LinuxLinux
  • 3.16Affected
  • before 3.16Not affected
  • 5.10.261 through 5.10.*Not affected
  • 5.15.212 through 5.15.*Not affected
  • 6.1.178 through 6.1.*Not affected
  • 6.6.145 through 6.6.*Not affected
  • 6.12.96 through 6.12.*Not affected
  • 6.18.39 through 6.18.*Not affected
  • 7.1.4 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.