🇰🇷 한글 설명
Linux 커널의 Zynq GPIO 드라이버에서 요청 오류 발생 시 런타임 전원 관리(PM) 참조 카운터가 해제되지 않는 누수가 발생합니다. 이로 인해 컨트롤러의 클록이 계속 활성화되어 시스템이 절전 모드로 진입하지 못하는 문제가 있습니다.
💡 쉬운 설명
장치를 사용하려고 시도하다가 오류가 났을 때, 사용 중이라는 표시를 제대로 지우지 않아 발생하는 문제입니다. 이 때문에 장치가 계속 켜져 있게 되어 배터리나 전력이 낭비될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
gpio: zynq: fix runtime PM leak on request error path
pm_runtime_get_sync() leaves the usage counter incremented even when it
fails, and zynq_gpio_request() returns the error without dropping it.
gpiolib does not call ->free() when ->request() fails, so zynq_gpio_free(),
which holds the only matching pm_runtime_put(), never runs. The reference
is leaked and the controller can no longer runtime-suspend, so its clock
stays enabled.
Switch to pm_runtime_resume_and_get(), which only increments the usage
counter on success.
📍 영향받는 시스템
Linux kernel (Zynq GPIO driver 포함 버전)
⚔️ 공격 벡터
직접적인 공격은 어려우나, 시스템 자원 고갈 및 전력 관리 기능 저하를 유발할 수 있음
🛡️ 대응 방법
커널 패치를 적용하여 pm_runtime_get_sync() 대신 pm_runtime_resume_and_get()를 사용하도록 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전인지 확인