CVE-2026-89991 in Linux情報

要約

〜によって VulDB • 2026年09月16日

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

bpf: 1つのCPUのみが利用可能な環境におけるpcpu_freelist pushの無限ループを修正する

__pcpu_freelist_push()は、1つのCPUしか存在しない場合で、NMI(非マスク可能割込み)が割り込まれたコンテキストがそのCPUのfreelistロックを保持している間にpcpu_freelist_push()へ再突入すると、永遠にループすることがあります。

現在のCPUを対象とした高速パス処理が失敗した後、フォールバックループはcpu_possible_maskを走査しますが、現在のCPUはスキップされます。CONFIG_SMP=nの場合、またはSMPカーネルでnr_cpus=1やpossible_cpus=1によって利用可能なCPU数が1つに制限されている場合、確認できる他のCPUが存在しません。そのため、このループではロックの取得試行が行われず、処理が進行することができません。

UP(ユニプロセッサ)システムにおいて以下のスタックトレースが観測されました:

NMIコンテキスト: pcpu_freelist_push free_htab_elem htab_map_delete_elem [perf-event BPFプログラム]
__perf_event_overflow perf_event_nmi_handler exc_nmi

割り込まれたコンテキスト: __pcpu_freelist_push pcpu_freelist_push free_htab_elem htab_map_delete_elem [raw_tp/sys_enter BPFプログラム]
__bpf_trace_sys_enter do_syscall_64

raw_res_spin_lock()は同一CPUでの再帰的なロック取得を検出し、-EDEADLKを返しますが、その後のフォールバックループには、利用可能なCPUが1つのシステムにおいて候補となるヘッドがありません。

rqspinlock変換前に存在していた追加のフォールバックヘッドを復元します。現在のCPUを対象とした高速パス処理を残し、次に他の利用可能なCPUを試行し、最後に追加のヘッドを使用するようにします。この追加のヘッドにより、プリアロケートされた要素を失うことなく失敗することのないpush操作が、唯一のper-CPUヘッドが割り込まれたコンテキストによって保持されている場合でも処理を進めることができます。

また、popパスからも追加のヘッドをチェックし、そこに配置されたノードが再利用されるようにします。

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

責任者

Linux

予約する

2026年09月11日

モデレーション

承諾済み

エントリ

VDB-405796

EPSS

0.00000

アクティビティ

非常低い

ソース

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!