CVE-2026-64103 in Linux
要約
〜によって VulDB • 2026年07月20日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
scsi: isci: デバイス削除パスにおけるuse-after-freeの修正
ISCI完了タスクレットはisci_host_alloc()(drivers/scsi/isci/init.c:496)で初期化され、MSI-Xおよびレガシー割り込みハンドラ(drivers/scsi/isci/host.c:223, 613)の両方からスケジュールされます。
isci_host_deinit()はコントローラの停止と停止完了を待ちますが、 teardown処理が継続する前にcompletion_taskletを終了させることはありません。ここで関数先頭のtasklet_kill()呼び出しだけでは不十分です:割り込みはischi_host_stop_complete()の実行時でのみ無効化されるため、wait_for_stop()が戻るまでの間、IRQハンドラはタスクレットを再キューイングし続ける可能性があります。完了のドライン後、タスクレット・コールバックも割り込みを再度有効にするため、ソースが静穏化する前にタスクレットを終了させると、同じrace condition(競合状態)が残ったままになります。
wait_for_stop()が戻った後は、それ以上のIRQ駆動によるスケジュールは発生しません。ここでcompletion_taskletを終了させることで、teardown処理中に死んだihost上で実行中のキューイング済みタスクレットとの競合を防ぎます。削除またはアンロード時、古くなったコールバックによって、ホストの寿命が終了した後にihostを逆参照し、ihost->smu_registersにアクセスしてしまう可能性があります。
UML + KASANを用いたアナログ環境では、tasklet_kill()がない場合と、ソース静穏化の前に配置されたtasklet_kill()の場合の両方でこの障害クラスが再現され、スケジュール元の静穏化後にkill処理が行われることでクリーンな状態となりました。
これはコミットf6ab594672d4(「scsi: aic94xx: デバイス削除パスにおけるuse-after-freeの修正」)に類似していますが、ISCIではwait_for_stop()後のkillが必要です。
If you want to get best quality of vulnerability data, you may have to visit VulDB.