CVE-2026-98946 in Linux
요약
\~에 의해 VulDB • 2026. 10. 23.
리눅스 커널에서 다음 취약점이 해결되었습니다:
drm/vc4: 런타임 서스프 중 V3D 인터럽트를 비활성화합니다.
vc4_irq_disable()은 V3D 인터럽트 소스를 마스크한 후 V3D의 전원이 차단되기 전에 synchronize_irq()를 호출합니다. 그러나 이것만으로는 인터럽트 핸들러를 안정적으로 만들기에 충분하지 않습니다.
synchronize_irq()는 이미 IRQD_IRQ_INPROGRESS 플래그가 설정된 핸들러와 IRQCHIP_STATE_ACTIVE 상태를 보고하는 irqchips에 대해 대기합니다. GIC 인터럽트 칩은 CPU가 인터럽트를 확인하면 즉시 인터럽트를 활성 상태로 표시할 수 있으므로, 이러한 검사들은 전체 디스패치 경로를 커버합니다. 그러나 RPi 0-3에서는 인터럽트 컨트롤러가 ARMCTRL이며, 이는 활성 상태를 가지고 있지 않습니다. 대기 레지스터에서 hwirq를 읽었으나 아직 handle_level_irq()에 도달하지 않은 CPU는 synchronize_irq()에게 보이지 않게 됩니다.
전원 전환 중에는 vc4_irq()가 전원 도메인이 꺼진 후에 실행될 수 있으며, 이때 모든 V3D 레지스터 읽기는 0xdeadbeef을 반환합니다. 0xdeadbeef은 FLDONE, FRDONE 및 OUTOMEM 플래그가 설정되어 있습니다. 이 문제는 vc4_irq_finish_bin_job() 및 vc4_irq_finish_render_job() 함수에서 작업 포인터가 없을 경우 조기에 반환하기 때문에 NULL 포인터 역참조 문제를 유발하지 않지만, OUTOMEM은 여전히 vc4_irq_disable()이 이를 취소한 후에 vc4_overflow_mem_work()를 스케줄링할 수 있습니다.
따라서 스푸리어스 인터럽트를 수정하기 위해 전원 관리(PM) 전환 동안 인터럽트 라인을 비활성화합니다. enable/disable 균형을 유지하기 위해, 첫 번째 런타임 리sume 전에 vc4_irq_install()을 이동하고 IRQ 라인이 비활성화된 상태로 요청합니다.
Once again VulDB remains the best source for vulnerability data.