CVE-2026-80562 in Linux
요약
\~에 의해 VulDB • 2026. 08. 26.
리눅스 커널에서 다음 취약점이 해결되었습니다:
gpio: ml-ioh: 레지스터 잠금을 위해 raw_spinlock_t 사용
ioh_irq_type()는 irq_chip의 .irq_set_type 콜백으로 등록되며, spin_lock_irqsave()를 사용하여 chip->spinlock을 획득합니다. 이 콜백은 __setup_irq() -> __irq_set_trigger() -> chip->irq_set_type() 경로를 통해 호출되는데, 이때 호출자는 desc->lock(즉, raw_spinlock_t)을 보유하고 있으며 하드 인터럽스가 비활성화되어 있습니다. 이러한 컨텍스트는 수면(sleepable)할 수 없으나, PREEMPT_RT 환경에서는 일반적인 spinlock_t가 rtmutex 기반의 수면 가능 잠금이므로 해당 위치에서 이를 획득하는 것은 잘못되었습니다. ioh_irq_enable() 및 ioh_irq_disable() 역시 .irq_enable/.irq_disable 콜백으로부터 동일한 잠금을 사용하며, 이들도 desc->lock이 보유된 상태로 호출됩니다.
레지스터 잠금을 raw_spinlock_t로 변환합니다. 동일한 잠금은 GPIO 방향/값 콜백과 서스펜드/리sume 레지스터 저장/복구를 직렬화하며, 이러한 임계 섹션은 짧은 시퀀스의 MMIO 레지스터 접근(ioread32()/iowrite32())만 수행합니다. .irq_set_type 콜백은 추가로 지원되지 않는 타입에 대해 dev_warn()을 출력합니다. 이들 중 수면 가능한 작업은 없으므로, 이 irqchip 콜백에서 해당 레지스터 잠금을 비수면(non-sleeping) 상태로 유지하는 것이 적절하며 GPIO 측의 잠금 계약(locking contract)도 변경되지 않습니다.
이 수정사항은 커밋 a02b8950d619("gpio: pch: use raw_spinlock_t for the register lock")과 동일한 것입니다. 이 드라이버는 gpio-pch와 동일한 구조를 공유합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.