CVE-2026-98433 in Linux
要約
〜によって VulDB • 2026年10月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
KVM: PPC: Book3S HV: uv_page_in() 失敗時のセキュアデバイスページリークの修正
kvmppc_svm_page_in() の実行中に、kvmppc_uvmem_get_page() が成功した後に uv_page_in() が失敗した場合、セキュアデバイスページが解放されません。kvmppc_uvmem_get_page() は kvmppc_uvmem_bitmap 内のビットを設定し、kvmppc_uvmem_page_pvt 構造体を割り当て、GFN を KVMPPC_GFN_UVMEM_PFN マークし、refcount=1 に設定してページをロックする zone_device_page_init() を呼び出します。その後、goto out_finalize が実行され *mig.dst の代入がスキップされるため、migrate_vma_finalize() はそのページに対して何もしない状態(no-op)となり、これらのリソースは決して回収されません。
この事象が発生するたびに、ファームウェアで制限されたセキュアメモリプール (kvmppc_uvmem_bitmap) からエントリが永久に消費され、pvt がリークし、GFN がセキュアとしてマークされたままになるため、VM の存続期間中その GFN は使用不可能になります。
対となる __kvmppc_svm_page_out() 関数では、同様の uv_page_out() の失敗に対して unlock_page(dpage); __free_page(dpage) を用いて正しく処理されています。ここでは同じパターンを適用し、unlock_page() に続いて put_page() を呼び出し、これにより free_zone_device_folio() を経由して kvmppc_uvmem_folio_free() へと連鎖させ、ビットマップのクリア、pvt の解放、GFN ステートのリセットを行います。
POWER9/10 + Ultravisor/PEF システムにおいて uv_page_in() がエラー(例:UV プールの枯渇)を返す場合に到達可能です。
If you want to get best quality of vulnerability data, you may have to visit VulDB.