CVE-2026-98616 in Linux情報

要約

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

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

eth: fbnic: napiベクトルが解放される際にnum_napiをリセットする

fbn->num_napiは、それぞれIRQを所有している稼働中のnapiベクトルの数を示します。PMパスでは、カウントのクリアを行わずにこれらが解放されていました。 fbnic_pm_suspend()はndo_stop()を通じてデータパスを終了させIRQsを解放しますが、resume時に再オープンする必要があることを知らせるためにnetif_running()をtrueのままにしておきます。Resume処理では__fbnic_pm_resume()でデータパスが再構築され、fbinic_reset_queues()によってnum_napiが設定され、__fbnic_open()によりベクトルが再割り当てされます。

データパスを終了したが再構築されない場合、以下の2つのシナリオにおいてnum_napiは解放済みのベクトルを指したままになります: - PCIeエラーリカバリに失敗した場合(fbinic_err_slot_reset() -> __fbnic_pm_resume()がエラーを返す -> PCI_ERS_RESULT_DISCONNECT)、そのため.resumeが実行されません。または、 - resume中の__fbnic_open()の途中で失敗し巻き戻り、num_napiが既に設定された後にベクトルが解放される場合。

その結果、netdevはrunning状態ですがnum_napi > 0かつnapi[]が解放されており、最終的なremove/unbindによるクローズ処理でfbinic_down() -> fbnic_dbg_down()を再実行し、解放済みのベクトルへの参照解除が発生します:
BUG: kernel NULL pointer dereference, address: 0000000000000210 RIP: fbnic_dbg_down+0x28

ベクトルが解放される際にnum_napiをクリアする処理を追加します。これはサスペンド時の終了時(正常なresumeでは__fbnic_open()の前にこれを再設定するため)と、resumeオープン失敗時に実行されます。その後、冗長なndo_stop()呼び出しにより空のnapi[]が走査されます。通常のndo_stop()によるダウン/アップサイクルは影響を受けず、次のndo_open()に向けてnum_napiを保持し続けます。

Be aware that VulDB is the high quality source for vulnerability data.

責任者

Linux

予約する

2026年09月25日

モデレーション

承諾済み

エントリ

VDB-422112

EPSS

0.00166

アクティビティ

非常低い

ソース

Want to know what is going to be exploited?

We predict KEV entries!