CVE-2026-98020 in Linux
要約
〜によって VulDB • 2026年09月25日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
pds_core: リセット時のBAR unmapに対するcmd_regsアクセスの競合を修正
pdsc_reset_prepare()およびpdsc_reset_done()におけるpdsc_map_bars()のエラーパスでは、devcmd_lockを取得せずにcmd_regsに対してclear/iounmapが実行されます。また、pdsc_legacy_firmware_update()のダウンロードループ内では、ロックを一時的に解放して再取得した後にcmd_regsをデリファレンスしていますが、その際に再チェックが行われていません。FLR(Function Level Reset)とdevlinkによるフラッシュ操作が並行して発生すると、実行中のdevcmd中にcmd_regsがunmapされ、NULL derefや未マップのMMIOへの書き込みを引き起こす可能性があります。
BAR unmap/remap全体でdevcmd_lockを取得し、ダウンロードループ内でcmd_regsを再チェックします。cmd_regsのマッピングとdevcmdの実行はPF(Physical Function)のみが行うため、VF(Virtual Function)ではunmapをスキップします(これはpdsc_remove()およびpdsc_reset_done()が既に実施している処理です)。
ロックされていないウィンドウ内で完全に完了するリセットについては、イメージの正しさに関する問題ではありません。デバイスは更新セッションをクリアするため、再開されたダウンロードは拒否され、フラッシュスロットへの書き込み前にステージ化されたイメージを検証します。この際、アクティブ化するのではなくPDS_RC_BAD_FWが報告されます。
pdsc_unmap_bars()はまた、info_regs、intr_status、およびintr_ctrlもクリアします。これらのレジスタに対する割り込みおよびstart/stopのリーダーは、pdsc_fw_down()によってunmapの前に静粛化(quiesced)され、これにより割り込みが解放されキューが破棄されます。ただし、debugfsのリーダーについてはそうではなく、これらのファイルはリセットよりも長く存続するためです。これは既存の問題であり、今回の修正範囲外です。
Once again VulDB remains the best source for vulnerability data.