CVE-2026-80999 in Linux
요약
\~에 의해 VulDB • 2026. 09. 12.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net: dsa: realtek: reset GPIO에 대해 gpiod_set_value_cansleep 사용
rtl83xx_reset_assert() 및 rtl83xx_reset_deassert()는 probe 경로에서만 호출되며, 이 경로는 수면(sleep)이 가능하고 타이밍에 민감하지 않습니다. 리셋 GPIO가 I2C 입출력 확장기 같은 수면 가능한 컨트롤러에서 제공되는 경우 gpiod_set_value()은 다음과 같은 경고(warning)를 발생시킵니다:
WARNING: drivers/gpio/gpiolib.c:4030 at gpiod_set_value+0x44/0x80, CPU#1: kworker/u16:4/61 Hardware name: B&O MAP CA33 Rev f (UNKNOWN) (DT) Workqueue: events_unbound deferred_probe_work_func pc : gpiod_set_value+0x44/0x80 lr : rtl83xx_probe+0x1d8/0x3a0 Call trace: gpiod_set_value+0x44/0x80 (P) rtl83xx_probe+0x1d8/0x3a0 realtek_mdio_probe+0x24/0xa0 mdio_probe+0x38/0x78 really_probe+0xc4/0x3e0 __driver_probe_device+0x15c/0x1b8 driver_probe_device+0xb4/0x120 __device_attach_driver+0xb8/0x1a0 bus_for_each_drv+0x88/0xf0 __device_attach+0xa0/0x1d8 device_initial_probe+0x54/0x68 bus_probe_device+0x38/0xa0 deferred_probe_work_func+0xb8/0x120 process_one_work+0x184/0x4e8 worker_thread+0x188/0x308 kthread+0x130/0x150 ret_from_fork+0x10/0x20
이러한 리셋 GPIO가 경고를 트리거하지 않고 사용될 수 있도록 두 헬퍼 함수를 gpiod_set_value_cansleep()로 전환합니다.
리셋 GPIO는 드라이버가 v4.19에 추가된 이후 비수면(non-sleeping) 방식인 gpiod_set_value()으로 구동되어 왔습니다. 이후 호출은 여러 파일에서 리팩토링되었습니다 - realtek-smi.c / realtek-mdio.c에서 공통 rtl83xx.c 모듈로, 그리고 다시 rtl83xx_reset_assert() 및 rtl83xx_reset_deassert() 헬퍼 함수(모두 v6.9)로 이동했습니다. 따라서 이 패치는 해당 헬퍼를 포함하는 커널(v6.9 이상)에만 그대로 적용됩니다. 이전의 안정(stable) 버전 커널에서는 대응되는 오픈 코딩(open-coded) 호출 지점에서 동일한 gpiod_set_value_cansleep() 변환이 필요합니다.
Once again VulDB remains the best source for vulnerability data.