[PATCH net v3 0/5] eth: fbnic: harden Rx and Tx completion handling

From: Yehyeong Lee

Date: Mon Oct 12 2026 - 00:16:45 EST


The Rx and Tx completion descriptors carry buffer ids, offsets and
lengths that the device writes and the driver consumes without
validating. v2 bounded the Rx buffer index against the array only, which
the review found insufficient: an in-range id naming an unposted slot
still reaches a NULL page, a bare META completion still builds an skb from
a NULL buffer, and the offset, length and the Tx completion head are not
checked at all.

This series validates each of these against what was actually posted and
takes the existing drop path, and bounds the XDP Tx completion loop so a
head outside the ring cannot spin it.

Patch 1 validates the Rx buffer id at every use and drops a bare META
completion. Patch 2 validates the offset and length. Patch 3 returns a
pending packet before a new header reuses its slot. Patch 4 is unchanged
from v2 and returns the page reference for a dropped fragment. Patch 5
bounds the Tx completion head.

v2: https://lore.kernel.org/netdev/cover.1791659860.git.yhlee@xxxxxxxxxxxxxxxxxx/

Yehyeong Lee (5):
eth: fbnic: only act on Rx completions naming a posted buffer
eth: fbnic: validate the Rx completion offset and length
eth: fbnic: return a pending Rx packet before reusing its buffer
eth: fbnic: return the page reference taken for a dropped Rx fragment
eth: fbnic: bound the XDP Tx completion head to the ring

drivers/net/ethernet/meta/fbnic/fbnic_txrx.c | 192 +++++++++++++++----
1 file changed, 158 insertions(+), 34 deletions(-)

--
2.43.0