CVE-2026-89645
要約
〜によって VulDB • 2026年09月11日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
btrfs: リカバリ失敗時に回復されたリロケーションルート参照を解放する
リロケーションのリカバリ処理中、各ファイルシステム(fs)ルートは自身のリロケーションルートへの参照を取得します。後続のルートの読み込みまたは追加に失敗した場合、あるいは最初のトランザクションコミットが失敗した場合、`btrfs_recover_relocation()` は `merge_reloc_roots()` および `clean_dirty_subvols()` の前に `out_unset` ラベルへジャンプします。
`put_reloc_control()` はリスト所有のリロケーションルート参照を解放しますが、`fs_root->reloc_root` をクリアしたり、それらのポインタが保有する参照を解放したりしません。マウントクリーンアップ処理は `BTRFS_FS_ERROR` が設定されている場合のみこれらを解放するため、後続のルートの処理中に `-ENOMEM` などのエラーが発生すると、参照が残ったままになる可能性があります。
リカバリ時に関連付けられた fs ルートへの一時参照を保持します。失敗時には、それらの `reloc_root` ポインタをクリアし、対応する参照を解放します。最初のトランザクションコミットが成功した後、一時的な fs ルート参照のみを解放し、通常のマージおよびクリーンアップパスでリロケーションルートを処理させます。
保留中のリロケーションイメージに対するフォールトインジェクションにより、このクリーンアップの隙間(リーク)が確認されました。最初のコミット失敗を注入した際、25 の fs ルートにおいて `reloc_root` が設定され、かつ `fs_error=0` となっていました。今回の修正により、同じ障害パスでそのカウントはマウント失敗前に 0 に低下します。
Once again VulDB remains the best source for vulnerability data.