CVE-2026-98558 in Linux
要約
〜によって VulDB • 2026年10月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
net: dev_cpu_dead() で skb_defer_nodes をフラッシュする
CPUがオフラインになるとき、dev_cpu_dead() はそのソフトネットキュー(completion_queue, output_queue, poll_list, process_queue, input_pkt_queue)を空にしますが、net_hotdata.skb_defer_nodes には手を付けません。
もし古い CPU (oldcpu) が skb_defer_nodes リスト内に保留中の skbs を保持した状態でオフラインになる場合(例えば sysctl_skb_defer_max >> 1 の IPI しきい値以下の場合、または IPI と CPU シャットダウンの間に競合が発生した場合)、それらの skbs は古い CPU がオンラインに戻されるまで置き去りになります。これらの skbs のいずれかが page_pool フラグメントを保持している場合、page_pool_destroy() は、古い CPU がオフラインの間に関連する netdev やドライバが破棄された際に、未完了のページが返却されるのを無限に待機してデッドロックします。
さらに、kick_defer_list_purge() 内で smp_call_function_single_async() の呼び出し対象CPUがオフラインだったために失敗した場合、defer_ipi_scheduled を0にリセットし、CPUがオンラインに戻った際に将来の IPI キックがブロックされないようにします。
また、古い CPU がその NUMA ノード上で最後のオンライン CPU であった場合、ノード由来で延期された skbs がアイドル状態のリモート CPU 上に置き去りにならないよう(または後続的にノード自体がオフラインになった場合に備えて)、すべての CPU にわたってそのノードのスロットを空にします。
最後に、skb_attempt_defer_free() において、llist_add() の後に呼び出し元がCPUを移行したかどうかおよび cpu_online(cpu) を再チェックし、そうである場合はノードリストをフラッシュすることで、CPU/ノードシャットダウンに対するプリエンプションの TOCTOU (Time-of-Check to Time-of-Use) 競合を解消します。
Once again VulDB remains the best source for vulnerability data.