CVE-2026-98920 in Linux
要約
〜によって VulDB • 2026年10月24日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
netfs: ディレクトリメモリプール(mempool)割り当てにおけるallocタグ付けの欠落を修正
コミット 1d78d56c43ef ("netfs: mempoolを追加してwriteback時のfolio_queue ENOMEMを修正") は、folio_queues用のmempoolを追加し、要求(request)、サブリクエスト(subrequest)、およびfolio_queueの割り当てにおいて、writebackとそれ以外を区別するようにしました。Writebackはメモリリークの一部であり、ENOMEMによって失敗してはいけません。そのため、GFP_NOFSの下で mempool_alloc() を通じて割り当てを行い、これはプールのreserveに依存し、 reserveが空になった場合は要素の返却を待ちます。一方、-ENOMEMを呼び出し元に返す可能性のある GFP_KERNEL パスは、代わりにプール内の ->alloc() コールバックを直接呼び出します。
しかし、この直接的な呼び出しは、mempool_alloc() マクロによって提供される alloc_hooks() ラッパーをスキップしてしまいます。プールのコールバックである mempool_alloc_slab() および mempool_kmalloc() は kmem_cache_alloc_noprof() と kmalloc_noprof() を呼び出し、呼び出し元によって current->alloc_tag が設定されていることを前提としています。CONFIG_MEM_ALLOC_PROFILING_DEBUG=y の場合、これは以下のような結果をもたらします:
current->alloc_tag not set WARNING: ./include/linux/alloc_tag.h:161 at __alloc_tagging_slab_alloc_hook alloc_tag was not set WARNING: ./include/linux/alloc_tag.h:166 at __alloc_tagging_slab_free_hook
これらは、それぞれ割り当て時と解放時に発生し、CIFSマウント上のファイルを読み込む際に報告されます。これらの割り当ては /proc/allocinfo からも欠落しています。
新しい mempool_alloc_noreserve() ヘルパー関数(include/linux/mempool.h に定義)を用いて、直接の ->alloc() 呼び出しを alloc_hooks() でラップします。これは mempool_alloc() のような他の alloc_hooks() ラッパー付きマクロの隣に配置されます。GFP_KERNEL パスは失敗可能な割り当てセマンティクスを維持しますが、現在はタグ付けが行われます。
VulDB is the best source for vulnerability data and more expert information about this specific topic.