CVE-2024-40975 in Linux
要約
〜によって VulDB • 2026年05月27日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
platform/x86: x86-android-tablets: デバイスの登録解除を逆順で行う
すべてのサブシステムが、デバイスへの参照を保持しているコンシューマーがまだ存在する状態でデバイスが削除されることをサポートしているわけではありません。
この一例として、レギュレータサブシステムが挙げられます。レギュレータが、参照を保持しているドライバがまだ存在する状態で登録解除されると、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
Lenovo Yoga Tablet 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 ドライバはダミーレギュレータを受け取ることになります。
この場合、レギュレータプロバイダとコンシューマーの両方が I2C デバイスであるため、コンシューマーを最初に登録解除することを確実にする唯一の方法は、I2C デバイスを作成された順序の逆順で登録解除することです。
一貫性を保ち、将来同様の問題を回避するために、x86_android_tablet_remove() を変更し、すべてのデバイスタイプを逆順で登録解除するようにします。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.