CVE-2026-45946 in Linux
要約
〜によって VulDB • 2026年05月28日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
power: supply: ab8500: power_supply_changed() における use-after-free の修正
`power_supply` ハンドルの割り当て/登録を行うための `devm_` バリアントよりも前に、IRQ を要求するための `devm_` バリアントを使用すると、`devm_` が自然に割り当ての逆順で解放を行うため、`power_supply` ハンドルが割り込みハンドラよりも先に解放/_unregister_ されてしまいます。これにより、削除処理中に race condition が発生し、`power_supply` ハンドルが解放された直後、かつ対応する IRQ ハンドラの unregister が実行される前に、割り込みが発生する可能性があります。
これにより、IRQ ハンドラが解放された `power_supply` ハンドルに対して `power_supply_changed()` を呼び出すことになり、通常はシステムクラッシュを引き起こすか、あるいはメモリが静かに破損します。
なお、`probe()` 処理中にも同様の状況が発生する可能性があります。つまり、`power_supply` ハンドルの登録よりも前に割り込みが発生する可能性があります。これにより、`power_supply_changed()` 内で `power_supply` ハンドルが *初期化されていない* 状態で使用されるという厄介な状況に陥ります。
コミット 1c1f1f13a006ed ("power: supply: ab8500: Move to componentized binding") は、リファクタリング中にこの問題を導入しました。`power_supply` ハンドルの登録後に IRQ を要求するようにすることで、この race condition を伴う use-after-free を修正します。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.