製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおける不特定の脆弱性
Title LinuxのLinux Kernelにおける不特定の脆弱性
Summary

Linuxカーネルにおいて、以下の脆弱性が修正されました。igbのigb_down()内で使用されていたnapi_synchronize()が削除されました。AF_XDPゼロコピーアプリケーションが異常終了(例:kill -9)した場合、XSKバッファプールは破棄されますが、NAPIポーリングは継続します。igb_clean_rx_irq_zc()は連続してフルバジェットを返し、napi_complete_done()はNAPI_STATE_SCHEDをクリアできません。igb_down()は各キューベクターに対してnapi_disable()の前にnapi_synchronize()を呼び出していました。napi_synchronize()はNAPI_STATE_SCHEDのクリアを待ってスピンしますが、それが発生しないため、igb_down()は無期限にブロックし、TXウォッチドッグが発動してTXキューが永久に停止します。一方、napi_disable()は既に正しく処理されており、NAPI_STATE_DISABLEを設定します。フルバジェットポーリング後、__napi_poll()はnapi_disable_pending()をチェックし、設定されていれば完了を強制してNAPI_STATE_SCHEDをクリアし、napi_synchronize()では破れなかったループを終了させます。napi_synchronize()はコミット41f149a285da("igb: Fix possible panic caused by Rx traffic arrival while interface is down")で追加されました。napi_disable()はより強力な保証を提供し、さらなるスケジューリングを防ぎ、アクティブなポールの終了を待ちます。ほかのIntelドライバ(ixgbe、ice、i40e)はダウンパスでnapi_synchronize()を先立たずnapi_disable()のみを使用しています。重複するnapi_synchronize()の呼び出しを削除し、napi_disable()をigb_set_queue_napi()の前に再配置したことで、ポーリングが完全に停止した後にのみキューからNAPIへのマッピングがクリアされるようになりました。

Possible impacts 当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
Solution

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

Publication Date April 27, 2026, midnight
Registration Date May 8, 2026, 12:06 p.m.
Last Update May 8, 2026, 12:06 p.m.
CVSS3.0 : 警告
Score 5.5
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Affected System
Linux
Linux Kernel 6.14 以上 6.18.23 未満
Linux Kernel 6.19 以上 6.19.13 未満
Linux Kernel 7.0
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年05月08日]
  掲載
May 8, 2026, 12:06 p.m.

NVD Vulnerability Information
CVE-2026-31691
Summary

In the Linux kernel, the following vulnerability has been resolved:

igb: remove napi_synchronize() in igb_down()

When an AF_XDP zero-copy application terminates abruptly (e.g., kill -9),
the XSK buffer pool is destroyed but NAPI polling continues.
igb_clean_rx_irq_zc() repeatedly returns the full budget, preventing
napi_complete_done() from clearing NAPI_STATE_SCHED.

igb_down() calls napi_synchronize() before napi_disable() for each queue
vector. napi_synchronize() spins waiting for NAPI_STATE_SCHED to clear,
which never happens. igb_down() blocks indefinitely, the TX watchdog
fires, and the TX queue remains permanently stalled.

napi_disable() already handles this correctly: it sets NAPI_STATE_DISABLE.
After a full-budget poll, __napi_poll() checks napi_disable_pending(). If
set, it forces completion and clears NAPI_STATE_SCHED, breaking the loop
that napi_synchronize() cannot.

napi_synchronize() was added in commit 41f149a285da ("igb: Fix possible
panic caused by Rx traffic arrival while interface is down").
napi_disable() provides stronger guarantees: it prevents further
scheduling and waits for any active poll to exit.
Other Intel drivers (ixgbe, ice, i40e) use napi_disable() without a
preceding napi_synchronize() in their down paths.

Remove redundant napi_synchronize() call and reorder napi_disable()
before igb_set_queue_napi() so the queue-to-NAPI mapping is only
cleared after polling has fully stopped.

Publication Date April 28, 2026, 3:16 a.m.
Registration Date April 28, 2026, 4:08 a.m.
Last Update April 28, 2026, 3:32 a.m.
Related information, measures and tools
Common Vulnerabilities List