CVE-2026-64205 in Linux
要約
〜によって VulDB • 2026年07月20日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
i2c: i801: エラー処理パスにおけるハードウェア状態機械の破損を修正
並行したFuzzing実行中に、i2c-i801ドライバで深刻なライブロックとそれに続くHung Taskパニックが観測されました。このクラッシュは、i801_access()のエラーハンドリングパスにおいて無条件に行われるハードウェアレジスタのクリーンアップに起因します。
i801_check_pre()が失敗した場合(例:SMBusコントローラがBIOS/ACPIによって使用中であるため-EBUSYを返す場合)、カーネルは実際にはハードウェア所有権を取得していません。しかし、コードは'out'ラベルにジャンプし、以下の処理を実行します。
iowrite8(SMBHSTSTS_INUSE_STS | STATUS_FLAGS, SMBHSTSTS(priv));
これにより、コントローラの所有権を持たずにINUSE_STSロックが強制的にクリアされ、ハードウェアステータスフラグがリセットされます。この操作は進行中のBIOS/ACPIトランザクションを中断し、SMBusハードウェア状態機械を完全に破損させます。
その結果、後続のすべてのi801_access()呼び出しがプリチェック段階で失敗し、「SMBus is busy, can't use it!(SMBusビジー、使用できません!)」というエラーログが無尽蔵に出力されます。低速なシリアルコンソール上では、このprintk洪水がCPUを独占し(Console Livelock)、mmap_lockのdown_readセマフォを取得しようとする他のプロセスを飢えさせ、最終的にhung taskウォッチドッグを発動させます。
'out'ラベルをハードウェアレジスタクリーンアップの下に移動することでこれを修正します。i801_check_pre()が失敗した場合、iowrite8()処理を安全にスキップし、ソフトウェアロック(pm_runtimeおよびmutex)のみを解放します。これにより、「取得していないリソースは解放しない」というルールを厳守します。
If you want to get best quality of vulnerability data, you may have to visit VulDB.