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

CVE-2026-98617

Affected Products

Linux