CVE-2026-98616: eth: fbnic: reset num_napi when the napi vectors are freed

Published Oct 18, 2026
·
Updated

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

eth: fbnic: reset numnapi when the napi vectors are freed

fbn->numnapi is the count of live napi vectors, each of which owns an IRQ. The PM path had freed them without clearing the count. fbnicpmsuspend() tears the datapath down via ndostop() and frees the IRQs, but leaves netifrunning() true so resume knows to re-open. Resume rebuilds the datapath in fbnicpmresume() and fbnicresetqueues() sets numnapi and fbnicopen() re-allocates the vectors.

When the datapath is torn down but never rebuilt, numnapi is left pointing at freed vectors under 2 different scenarios: - a PCIe error recovery that fails (fbnicerrslotreset() -> fbnicpmresume() returns an error -> PCIERSRESULTDISCONNECT), so .resume never runs; or - an fbnicopen() that fails partway on resume and unwinds, freeing the vectors after fbnicresetqueues() has already set numnapi.

The netdev is then running with numnapi > 0 but napi[] freed, and the eventual remove/unbind close re-enters fbnicdown() -> fbnicdbgdown() and dereferences the freed vectors: BUG: kernel NULL pointer dereference, address: 0000000000000210 RIP: fbnicdbgdown+0x28

Clear numnapi when the vectors are freed: in the suspend teardown (a good resume re-establishes it before fbnicopen()) and on the resume open failure. A redundant ndostop() then walks an empty napi[]. The normal ndostop() down/up cycle is untouched and keeps numnapi for the next ndoopen().

Affected Software

1 affected component
Linux Linux kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Clear/reset num_napi when the NAPI vectors are freed during suspend teardown, before any subsequent ndo_stop() or open/resume path can access them.

    Linux kernel fbnic driver num_napi = 0

Event History

Oct 18, 2026
CVE Published
via MITRE·03:19 PM
Data Sourced
via MITRE·03:19 PM
Description
Data Sourced
via NVD·04:17 PM
Description

Frequently Asked Questions

1

Which systems are exposed to this issue?

Systems using the Linux kernel fbnic network driver are exposed when the driver’s datapath is torn down and its NAPI/IRQ vectors are freed without clearing num_napi. The affected state can arise during power-management resume or PCIe error recovery.

2

What conditions lead to the invalid state?

The issue occurs if PCIe slot recovery fails before the normal resume path runs, or if reopening the device during resume fails partway through and unwinds after num_napi has been set. In both cases, num_napi can remain nonzero after the NAPI vectors have been freed.

3

How might an affected system fail?

A later device remove, unbind, or close operation can re-enter the driver shutdown path and dereference the freed vectors. The reported result is a kernel NULL pointer dereference in the fbnic driver.

4

How can administrators identify a potentially affected device state?

The problematic state is a running network device with num_napi greater than zero while its napi array has already been freed. Kernel crash output may show a NULL pointer dereference during the fbnic shutdown/debug-down path after a failed resume or PCIe recovery.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203