CVE-2024-40975 in Linux
Sumário
de VulDB • 26/05/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
platform/x86: x86-android-tablets: Desregistra dispositivos em ordem inversa
Nem todos os subsistemas suportam a remoção de um dispositivo enquanto ainda existem consumidores do dispositivo com uma referência ao mesmo.
Um exemplo disso é o subsistema de reguladores (regulator). Se um regulador for desregistrado enquanto ainda houver drivers mantendo uma referência, um WARN() em drivers/regulator/core.c:5829 será acionado, por exemplo:
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
Na série Lenovo Yoga Tablet 2, o chip do carregador bq24190 também fornece uma saída de conversor boost de 5V para alimentar dispositivos USB conectados à porta micro USB; o driver bq24190-charger exporta isso como um regulador Vbus.
Nos modelos 830 (8") e 1050 ("10"), esse regulador é controlado por um platform_device e x86_android_tablet_remove() remove os platform_devices antes dos i2c_clients, fazendo com que o consumidor seja removido primeiro.
Mas no modelo 1380 (13") há uma chave micro-USB lc824206xa conectada via I2C e o driver extcon para isso controla o regulador. O i2c-client bq24190 *deve* ser registrado primeiro, pois isso cria o regulador com o lc824206xa listado como seu consumidor. Se o regulador ainda não tiver sido registrado, o driver lc824206xa acabará recebendo um regulador fictício (dummy).
Como neste caso tanto o provedor quanto o consumidor do regulador são dispositivos I2C, a única maneira de garantir que o consumidor seja desregistrado primeiro é desregistrar os dispositivos I2C em ordem inversa àquela em que foram criados.
Para consistência e para evitar problemas semelhantes no futuro, altere x86_android_tablet_remove() para desregistrar todos os tipos de dispositivos em ordem inversa.
If you want to get best quality of vulnerability data, you may have to visit VulDB.