linux/drivers/net
Eric Dumazet 296c83b5cc gve: DQO: reject TSO packets with an out of range MSS
gve_prep_tso() notes that the device requires the MSS to be <= 9728,
but does not enforce it, assuming the 9K MTU enforced by the hypervisor
and the 64KB limit on TSO sizes are enough.

This does not hold for packets that were not generated locally.
A guest behind a tap, or any packet socket user, can provide an
arbitrary gso_size in virtio_net_hdr. Layer 2 forwarding does not check
the MTU for GSO packets (is_skb_forwardable()), and gso_features_check()
only bounds skb->len and gso_segs, never gso_size.

Such a packet reaches gve_tx_fill_tso_ctx_desc(), which puts gso_size
into the mss field of the TSO context descriptor. This field is 14 bits
wide, so a gso_size of 16384 is silently turned into an MSS of zero.

Drop these packets from gve_prep_tso(), and make sure that
gve_features_check_dqo() leaves their GSO bits alone: skb_segment()
splits at gso_size regardless of the MTU, so falling back to software
segmentation would give the device non TSO packets bigger than the
9728 bytes it supports.

Note that the device can still be given oversized non TSO packets when
the stack segments in software for other reasons, for instance after
TSO has been disabled with ethtool. This is a generic issue, because
the MTU check is skipped for GSO packets in the forwarding path, and
is addressed separately.

Fixes: a57e5de476 ("gve: DQO: Add TX path")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Harshitha Ramamurthy <hramamurthy@google.com>
Link: https://patch.msgid.link/20260924004252.1196328-3-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-09-24 10:56:59 -07:00
..
arcnet
bonding bonding: crypto offload enabled, non-offload slave failover, rekey failed 2026-09-24 11:53:59 +02:00
can
dsa net: dsa: mt7530: leave the MDIO IRQ mappings to regmap-irq 2026-09-24 08:16:53 -07:00
ethernet gve: DQO: reject TSO packets with an out of range MSS 2026-09-24 10:56:59 -07:00
fddi net: fddi: skfp: fix NULL deref when setting the MAC address while down 2026-09-15 10:31:54 +02:00
fjes
hyperv hv_netvsc: Remove GPADL teardown special case for old Hyper-V hosts 2026-08-24 00:35:42 +00:00
ieee802154 ieee802154: hwsim: serialize pib updates to fix double-free 2026-09-02 10:26:47 +02:00
ipa net: ipa: balance runtime PM reference on remove error 2026-08-20 12:26:24 -07:00
ipvlan ipvlan: unregister upper devices outside pnodes_lock 2026-08-30 14:30:59 -07:00
mctp net: mctp: i3c: serialize probe with bus removal 2026-09-05 09:39:00 +01:00
mdio net: mdio: realtek-rtl9300: fix RTL931x C22 extended page selection 2026-09-23 18:54:19 -07:00
netdevsim netdevsim: update queue NAPI association on queue reset 2026-08-20 12:35:57 -07:00
ovpn ovpn: reject invalid peer VPN addresses 2026-09-21 11:39:13 +02:00
pcs net: pcs: xpcs: fix clock reference leak on xpcs_init_clks failure 2026-09-22 15:39:06 +02:00
phy net: phy: intel-xway: workaround 100BASE-TX Link-Up issue 2026-09-24 10:21:20 -07:00
plip
ppp ppp_synctty: ensure a writeable skb header 2026-09-09 18:41:57 -07:00
pse-pd net: pse-pd: realtek-pse-mcu: add UART transport 2026-08-18 15:04:33 +02:00
slip slip: remove slip_hangup() to fix use-after-free in slip_receive_buf() 2026-08-27 12:38:27 -07:00
team
thunderbolt Including fixes from Bluetooth, IPSec and Netfilter. 2026-08-27 13:53:43 -07:00
usb net: usb: cdc_mbim: add MeiG Smart SRM821 to ZLP whitelist 2026-09-24 09:27:47 -07:00
vmxnet3
vxlan vxlan: use one headroom snapshot for neighbour replies 2026-09-23 19:29:26 -07:00
wan
wireguard
wireless Including fixes from Netfilter, Bluetooth, IPSec and WiFi. 2026-09-17 10:40:48 -07:00
wwan net: wwan: t7xx: validate the netif index in t7xx_ccmni_recv_skb() 2026-09-16 18:58:45 -07:00
xen-netback
amt.c
bareudp.c
dummy.c
eql.c
geneve.c
gtp.c net: iptunnel: fix stale transport header during tunnel decapsulation 2026-08-28 15:53:46 -07:00
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macsec.c macsec: initialize SecY before registering the netdevice 2026-09-24 15:15:20 +02:00
macvlan.c
macvtap.c
Makefile
mdio.c
mhi_net.c
mii.c
net_failover.c net: net_failover: Fix the deadlock in net_failover_slave_name_change() 2026-09-10 15:19:06 +02:00
netconsole.c
netkit.c
nlmon.c
ntb_netdev.c treewide: refresh kmalloc_obj() conversions 2026-09-04 21:37:00 -07:00
pfcp.c
rionet.c
sungem_phy.c
tap.c
tun_vnet.h
tun.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-08-18 10:42:41 -07:00
veth.c veth: manage XDP program pointers during channel resize 2026-09-23 16:53:57 -07:00
virtio_net.c virtio_net: copy zerocopy frags in start_xmit without NAPI 2026-09-22 18:32:57 -07:00
vrf.c vrf: Stop corrupting skb->csum when capturing CHECKSUM_COMPLETE packets 2026-09-23 17:47:10 -07:00
vsockmon.c
xen-netfront.c