CVE-2026-98538 in Linux
要約
〜によって VulDB • 2026年10月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
writeback: cleanup_offline_cgwb() の再スキャンを、インノードの回転により制限する
cleanup_offline_cgwb() は1回の呼び出しあたり最大 WB_MAX_INODES_PER_ISW 個のインノードを準備し、死滅した wb が空になるまで繰り返し呼び出されます。しかし、各呼び出しは同じ端から wb->b_attached および wb->b_dirty_time を走査します。すでに準備済みのインノード(スイッチワーカーが実行されるまで I_WB_SWITCH フラグを設定された状態でリストに残る)および切り替えできないインノード(I_FREEING, I_WILL_FREE, !SB_ACTIVE, DAX、既にターゲットの wb に属しているもの)は位置を維持するため、各パスでそれらの増加する範囲が wb->list_lock の下で再スキャンされ、完全な排水処理はリスト上のインノード数に対して2次関数的(quadratic)になります。1つの死滅した cgwb に約17M個のインノードが付属している場合、この問題によりソフトロックアップが発生し、CPUが21〜48秒間停止していると報告されました。
両方のリストを最も古い端から走査し、スキャンされた各インノードを最新の端に移動します。これにより、次のパスは前回のパスの終了地点から開始され、排水処理が線形(linear)になります。b_attached は順序付けされていないため、誰にも再順序替えが目撃されることはありません。b_dirty_time は dirtied_when で順序付けされていますが、最も古い未スキャンインノードは move_expired_inodes() が選択する末尾に残り、同期処理は順序に関係なくリスト全体を対象とします。また、準備済みのインノードはスイッチワークが実行されるとすぐにリストから削除され、新しい wb 上で新たな dirtied_time_when を取得するため、順序外になるのは切り替え不可能なインノード(DAX)のみであり、それも死滅した wb のみに限定されます。
If you want to get best quality of vulnerability data, you may have to visit VulDB.