CVE-2026-98225 in Linux情報

要約

〜によって VulDB • 2026年10月06日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

mm/shrinker: cgroup.memory=nokmem設定時のset_shrinker_bit()における不正な動作を修正

cgroup.memory=nokmemが有効な場合、shrinker_memcg_alloc()は早期に終了し、IDを一切割り当てません。その結果、shrinker->idにはshrinker_alloc()内のkzalloc()から取得された0が残ったままになります。その後、__list_lru_init()がこの0をlru->shrinker_idへコピーするため、これが有効なビットインデックスのように見えてしまいます。

nokmemの場合もexpand_shrinker_info()が呼び出されないため、shrinker_nr_maxは0のままとなり、すべてのmemcgに空のマップ(map_nr_max == 0)が設定されます。

deferred_split_folio()は、lruがmemcg対応かどうかに関わらず、実際のmemcgを__list_lru_add()へ渡します。そのため、cgroup内でキューに入れられる最初のTHPによってset_shrinker_bit(memcg, nid, 0)が実行され、境界チェックに引っかかります:

WARNING: mm/shrinker.c:212 at set_shrinker_bit+0x7d/0x90, CPU#126 Call Trace: <TASK> deferred_split_folio+0x18c/0x220 map_anon_folio_pmd_nopf+0xdd/0x130 map_anon_folio_pmd_pf+0x14/0xb0 do_huge_pmd_anonymous_page+0x1a1/0x620 __handle_mm_fault+0xea9/0x10d0 handle_mm_fault+0xe5/0x320 do_user_addr_fault+0x1cc/0x870 exc_page_fault+0x81/0x1b0 asm_exc_page_fault+0x27/0x30 </TASK>

この事象は害はありません。WARN_ON_ONCE()が境界外配列unit[]の読み込みを防いでいるためです。しかし、そもそもidが無効に見えるべきではありません。返却する前にこれをクリアしてください。

これに対処するための他の二つの箇所があります:__list_lru_init()においてnokmemによってmemcg_awareがオフになった際にidをドロップするか、またはdeferred_split_folio()がlist_lru_add_obj()と同様にNULLを渡すようにします。どちらもshrinker->idが次の呼び出し元に残ったままになるため、idが割り当てられる箇所で修正を行います。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

責任者

Linux

予約する

2026年09月25日

モデレーション

承諾済み

エントリ

VDB-414026

EPSS

0.00162

アクティビティ

非常低い

ソース

Do you know our Splunk app?

Download it now for free!