PT-2026-116836 · Linux · Linux
CVE-2026-98617
·
Published
2026-10-18
·
Updated
2026-10-18
None
No severity ratings or metrics are available. When they are, we'll update the corresponding info on the page.
In the Linux kernel, the following vulnerability has been resolved:
eth: fbnic: use the Rx queue napi pointer to find the napi vector
The queue management ndos pick the napi vector for an Rx queue with:
nv = fbn->napi[idx % fbn->num napi];
The issue is this is only correct in the cases where there are no
standalone Tx vectors. In those cases we were allocating the Tx vectors
first and then the Rx so the queues would be pointing to Tx NAPI vectors
instead of the Rx ones.
The mapping the ndos want is already recorded. fbnic set netif napi()
publishes it with netif queue set napi(), which stores the napi pointer
in netdev rx queue.napi, and fbnic reset netif napi() clears it again.
Both run under the netdev instance lock that the queue management ndos
also hold, so the pointer can be read directly.
Use it and drop the divide. The pointer is NULL exactly while the
datapath is down, so fbnic queue mem alloc() can reject that case rather
than reaching into freed state: netdev rx queue restart() calls it
before it tests netif running(), and fbnic pm suspend() leaves
netif running() true across a PCIe recovery that never completes, so a
queue restart can arrive after fbnic stop() has freed the rings and the
vectors. fbnic stop() clears the association in
fbnic reset netif queues() before fbnic free napi vectors(), so the
NULL is always published first. fbnic queue start() and
fbnic queue stop() need no check of their own, as
netdev rx queue reconfig() only reaches them once fbnic queue mem alloc()
has succeeded under the same instance lock.
Found an issue in the description? Have something to add? Feel free to write us 👾
Related Identifiers
Affected Products
Linux