linux/drivers/net/vmxnet3
Harshaka Narayana 34a71f5361 vmxnet3: fix BUG_ON in vmxnet3_get_hdr_len() for Geneve packets
vmxnet3_get_hdr_len() assumes gdesc->rcd.v4/v6/tcp always describe the
outer header, but for a Geneve-encapsulated packet the device can set
them based on the inner header instead, signalled by the
VMXNET3_RCD_HDR_INNER_SHIFT bit in the completion descriptor. Since the
function never skips the outer encapsulation, this mismatch triggers:

- BUG_ON(hdr.ipv4->protocol != IPPROTO_TCP), because the outer
  protocol is UDP (Geneve), not TCP.
- BUG_ON(hdr.eth->h_proto != ...), when the tunnel's outer and inner
  IP versions differ (e.g. outer IPv6/inner IPv4 or vice versa).

Check VMXNET3_RCD_HDR_INNER_SHIFT up front and bail out, since the
function cannot locate the inner header it would need to parse. Also
convert the remaining BUG_ON()s in this function to return 0
defensively.

Fixes: 45dac1d6ea ("vmxnet3: Changes for vmxnet3 adapter version 2 (fwd)")
Signed-off-by: Harshaka Narayana <harshaka.narayana@broadcom.com>
Reviewed-by: Ronak Doshi <ronak.doshi@broadcom.com>
Reviewed-by: Sankararaman Jayaraman <sankararaman.jayaraman@broadcom.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20260713140915.3381715-1-harshaka.narayana@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-07-22 13:52:44 -07:00
..
Makefile vmxnet3: prepare for version 9 changes 2024-06-05 15:56:47 -07:00
upt1_defs.h
vmxnet3_defs.h vmxnet3: add command to allow disabling of offloads 2024-06-05 15:56:48 -07:00
vmxnet3_drv.c vmxnet3: fix BUG_ON in vmxnet3_get_hdr_len() for Geneve packets 2026-07-22 13:52:44 -07:00
vmxnet3_ethtool.c net: vmxnet3: convert to use .get_rx_ring_count 2025-11-19 20:14:21 -08:00
vmxnet3_int.h vmxnet3: update to version 9 2024-06-05 15:56:48 -07:00
vmxnet3_xdp.c vmxnet3: Fix malformed packet sizing in vmxnet3_process_xdp 2025-04-25 17:24:07 -07:00
vmxnet3_xdp.h