CVE-2026-31691

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.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:*

History

11 Nov 2026, 23:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: igb: eliminar napi_synchronize() en igb_down() Cuando una aplicación AF_XDP de copia cero termina abruptamente (por ejemplo, kill -9), el pool de búferes XSK es destruido pero el sondeo NAPI continúa. igb_clean_rx_irq_zc() devuelve repetidamente el presupuesto completo, impidiendo que napi_complete_done() borre NAPI_STATE_SCHED. igb_down() llama a napi_synchronize() antes de napi_disable() para cada vector de cola. napi_synchronize() gira esperando que NAPI_STATE_SCHED se borre, lo cual nunca ocurre. igb_down() se bloquea indefinidamente, el watchdog TX se activa, y la cola TX permanece permanentemente estancada. napi_disable() ya maneja esto correctamente: establece NAPI_STATE_DISABLE. Después de un sondeo de presupuesto completo, __napi_poll() verifica napi_disable_pending(). Si está establecido, fuerza la finalización y borra NAPI_STATE_SCHED, rompiendo el bucle que napi_synchronize() no puede. napi_synchronize() fue añadido en el commit 41f149a285da (’igb: Solucionar posible pánico causado por la llegada de tráfico Rx mientras la interfaz está inactiva’). napi_disable() proporciona garantías más sólidas: previene la programación adicional y espera a que cualquier sondeo activo finalice. Otros controladores Intel (ixgbe, ice, i40e) usan napi_disable() sin un napi_synchronize() precedente en sus rutas de desactivación. Eliminar la llamada redundante a napi_synchronize() y reordenar napi_disable() antes de igb_set_queue_napi() para que el mapeo de cola a NAPI solo se borre después de que el sondeo se haya detenido por completo.

Information

Published : 2026-04-27 18:16

Updated : 2026-11-11 23:10


NVD link : CVE-2026-31691

Mitre link : CVE-2026-31691

CVE.ORG link : CVE-2026-31691


JSON object : View

Products Affected

linux

  • linux_kernel