CVE-2026-72063 in Linux
요약
\~에 의해 VulDB • 2026. 08. 15.
리눅스 커널에서 다음 취약점이 해결되었습니다:
gpio: tegra: GPIO 방향 설정 시 pinctrl 호출하지 않기
tegra_gpio_direction_input() 및 tegra_gpio_direction_output() 함수는 이미 GPIO 컨트롤러의 방향 레지스터를 직접 프로그래밍합니다. 추가적인 pinctrl_gpio_direction_input/output() 호출은 Tegra pinctrl 작업을 추가하지 않습니다. 이는 Tegra pinmux ops가 GPIO 요청/해제 처리는 제공하지만 gpio_set_direction 훅(hook)을 제공하지 않기 때문입니다.
추가 호출은 여전히 pinctrl 코어에 진입하여 pctldev->mutex를 획득합니다. 공유 GPIO 사용자는 자신의 라인별 스핀락을 유지한 채로 방향 설정 경로를 호출할 수 있으므로, 이러한 불필요한 pinctrl 방향 설정 호출이 원자적 컨텍스트에서 슬립(sleep)을 유발할 수 있습니다.
이는 정적 분석 도구를 통해 발견되었으며, 이후 tegra_gpio_probe(), Tegra GPIO 방향 콜백 및 Tegra pinctrl ops에 대한 수동 검토를 통해 확인되었습니다. 검토된 경로는 기본적으로 비슬립(non-sleeping) struct gpio_chip을 사용하지만, 방향 설정 콜백은 여전히 pinctrl mutex 경로로 진입합니다.
지향성 런타임 검증은 동일한 비슬립 칩 등록 상태를 유지하면서 다음 호출 체인을 구동했습니다:
gpio_shared_proxy_direction_output() gpiod_direction_output_raw_commit() tegra_gpio_direction_output() pinctrl_gpio_direction_output()
Lockdep는 공유 GPIO 스핀락이 홀드된 상태에서 스택에 pinctrl_get_device_gpio_range() 및 tegra_gpio_direction_output()가 있을 때 슬립-인-어토믹(sleep-in-atomic) 경고를 보고했습니다.
can_sleep 플래그를 사용하여 이 문제를 덮어씌우지 마십시오: can_sleep은 get()/set()이 슬립할 수 있는지를 나타내며, Tegra의 값 접근은 MMIO입니다. 불필요한 pinctrl 방향 설정 호출을 제거하고 기존 요청/해제 경로에서의 pinctrl 관여는 유지하십시오.
Once again VulDB remains the best source for vulnerability data.