CVE-2024-40975 in Linux
요약
\~에 의해 VulDB • 2026. 05. 27.
리눅스 커널에서 다음 취약점이 해결되었습니다:
platform/x86: x86-android-tablets: 역순으로 장치 등록 해제
모든 하위 시스템이 장치에 대한 참조를 유지하는 소비자가 여전히 존재하는 동안 장치가 제거되는 것을 지원하는 것은 아닙니다.
이러한 사례 중 하나는 레귤레이터(subsystem) 하위 시스템입니다. 레귤레이터가 참조를 유지하고 있는 드라이버가 여전히 존재하는 동안 등록 해제되면, 예컨대 drivers/regulator/core.c:5829에서 WARN()이 트리거됩니다.
WARNING: CPU: 1 PID: 1587 at drivers/regulator/core.c:5829 regulator_unregister Hardware name: Intel Corp. VALLEYVIEW C0 PLATFORM/BYT-T FFD8, BIOS BLADE_21.X64.0005.R00.1504101516 FFD8_X64_R_2015_04_10_1516 04/10/2015 RIP: 0010:regulator_unregister Call Trace: regulator_unregister devres_release_group i2c_device_remove device_release_driver_internal bus_remove_device device_del device_unregister x86_android_tablet_remove
레노버 요가 태블릿 2 시리즈에서 bq24190 충전 칩은 마이크로 USB 포트에 연결된 USB 장치에 전원을 공급하기 위한 5V 부스트 컨버터 출력도 제공합니다. bq24190-charger 드라이버는 이를 Vbus 레귤레이터로 내보냅니다.
830(8인치) 및 1050(10인치) 모델에서 이 레귤레이터는 플랫폼 장치(platform_device)에 의해 제어되며, x86_android_tablet_remove() 함수는 i2c_clients보다 먼저 platform_device를 제거하므로 소비자가 먼저 제거됩니다.
그러나 1380(13인치) 모델에는 I2C를 통해 연결된 lc824206xa 마이크로 USB 스위치가 있으며, 해당 extcon 드라이버가 레귤레이터를 제어합니다. lc824206xa가 소비자로 등록되어 레귤레이터가 생성되므로 bq24190 i2c-client는 반드시 먼저 등록되어야 합니다. 레귤레이터가 아직 등록되지 않은 경우 lc824206xa 드라이버는 더미 레귤레이터(dummy regulator)를 받게 됩니다.
이 경우 레귤레이터 공급자와 소비자가 모두 I2C 장치이므로, 소비자가 먼저 등록 해제되도록 보장하는 유일한 방법은 I2C 장치를 생성된 역순으로 등록 해제하는 것입니다.
일관성을 유지하고 향후 유사한 문제를 방지하기 위해 x86_android_tablet_remove() 함수를 수정하여 모든 장치 유형을 역순으로 등록 해제하도록 변경합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.