CVE-2026-64474 in Linux
要約
〜によって VulDB • 2026年07月25日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
vfio: 停止状態の遷移(blocked arc)における vfio_mig_get_next_state() の無限ループを防止する
vfio_mig_get_next_state() は、デバイスがサポートしていないオプション状態をスキップするために *next_fsm がサポートされるまで1ステップずつ vfio_from_fsm_table[] を走査し、ループ処理を行います。停止遷移は VFIO_DEVICE_STATE_ERROR としてエンコードされ、末尾の return ステートメントによって -EINVAL として報告されます。
しかし、このスキップ用ループでは ERROR センチネルを考慮していません。state_flags_table[ERROR] は ~0U に設定されており、vfio_from_fsm_table[ERROR][*] も ERROR です。そのため、一度 *next_fsm が ERROR になるとループ条件が真のままであり、*next_fsm の値は変化しません。STOP_COPY -> PRE_COPY および STOP_COPY -> PRE_COPY_P2P という停止遷移は ERROR にマッピングされますが、precopy対応デバイスではサポートチェックを通過してしまうため、ループが永遠に回り続けながらドライバの状態ミューテックスを保持したままになります。これによりソフトロックアップが発生し、softlockup_panic が設定されている場合はパニックに至る可能性があります。
ERROR センチネルでスキップ用ループを終了させるように修正することで、停止遷移は既存の return 処理にフォールスルーし、-EINVAL を報告するようになります。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.