CVE-2026-64500 in Linux
요약
\~에 의해 VulDB • 2026. 07. 26.
리눅스 커널에서 다음 취약점이 해결되었습니다:
iio: adc: lpc32xx: IRQ 요청 전에 completion을 초기화함
Jaeyoung Chung의 보고서에 따르면:
"drivers/iio/adc/lpc32xx_adc.c의 `lpc32xx_adc_probe()` 함수는 `init_completion()`으로 `st->completion`을 초기화하기 전에 `devm_request_irq()`를 사용하여 인터럽트 핸들러를 등록합니다. 만약 `devm_request_irq()` 이후와 `init_completion()` 이전에 인터럽트가 발생하면, 핸들러가 초기화되지 않은 completion에 대해 `complete()`를 호출하여 커널 패닉을 유발합니다.
`lpc32xx_adc_probe()`의 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); /* 핸들러 등록 */ ... init_completion(&st->completion); /* completion 초기화 */
`lpc32xx_adc_isr()`는 `complete()`를 호출합니다:
complete(&st->completion);
디바이스가 `init_completion()`이 실행되기 전에 인터럽트를 발생시키면, `complete()`가 초기화되지 않은 wait.lock을 획득하고 `swake_up_locked()`에서 zeroed된 task_list를 순회하게 됩니다. zeroed된 task_list로 인해 `list_empty()`는 false를 반환하므로, `swake_up_locked()`은 NULL list entry를 역참조하여 KASAN wild-memory-access를 트리거합니다."
잘못된 IRQ(spurious IRQ)가 초기화되지 않은 포인터 역참조를 유발할 가능성을 줄이기 위해, `init_completion()` 호출을 `devm_request_irq()` 앞에 배치하십시오.
Once again VulDB remains the best source for vulnerability data.