From nobody Sat Oct 24 20:12:50 2026 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 70792331A4C for ; Sun, 11 Oct 2026 16:30:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791736209; cv=none; b=XOcRgxj2HMfVcMH3GtZdpBMw15Vl7tRESNxhrrRSNuw3jp7z4ZXFUG5VP1YYDk9dUzJdjvqpopeAe6oklBoEPWOELL+qY40/7Fu2WB38BoxrNI9mtqqVH3v5UTDEmZDh7+PtNDuGuMFAH/azkUcltQqAK9SALj9LzQAXEuu9nBw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791736209; c=relaxed/simple; bh=gySf8tkZ428le/U20u/o3aiJzjkbegB76EnbNa6P9wY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EwuDDzXeCvfoX72eZYatsmRkbE/Q+Bq/oeNABql7JhfdhOoDNeAOyQCt33sgggSIAPiY9ecYu4m0vJm63yGidodpmmsuHoCARSdJd113751s4hkd+kkcPj13+Hyh42tE83cIWbqlpLpbomy3Yr65y+oW6HZYYER0kWfQQ+j1ELk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bairaktaris.de; spf=pass smtp.mailfrom=bairaktaris.de; dkim=pass (2048-bit key) header.d=bairaktaris.de header.i=@bairaktaris.de header.b=JSweP+ED; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bairaktaris.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bairaktaris.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bairaktaris.de header.i=@bairaktaris.de header.b="JSweP+ED" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-48afe0081a6so771207f8f.2 for ; Sun, 11 Oct 2026 09:30:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bairaktaris.de; s=google; t=1791736203; x=1792341003; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=gdYE9zpvqOI/pBDY8tVSICunrB86zu9zwPxNrA/jEzM=; b=JSweP+EDdEAE/RiCrhIKV8bFEjoBeR74IMDd+Ugrq/8Tr5ZdhdHn1003RSbN6RtnDe IyTU5hGzofjuFkd9/meVOgrI1o7YpEJJS4Enh3iN72gAipq2G/INjm0fz/1QsUbrpyji 6bhsB8WjH3dh5TXaGdJE/Mj3i5Hk1Ri97jx4dD9A8jPlewAmPgKJwyG3FpKmBc+lE7it +OuBLAdiZpXUH1G/KwuoF0lLySZFjwXE+TkVUvZShQMdC4cnHqUxUkLXbTcmdl+d/SuC 0KuxX+LFSLMTD4al0asnaKxHw4pPXFbJWW3iyx6ahTzelFZIinj1RBwAKhTYZj/Yx16T nA1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791736203; x=1792341003; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=gdYE9zpvqOI/pBDY8tVSICunrB86zu9zwPxNrA/jEzM=; b=mbzjP16h6d2GwNegoWGBWEHHImUp1JrHFk9LxMDRwi66YxQrIuH4J1VEjuRn0+6wEI j+gRjN9YbEFmNZosj31doyWJgrrPl3SVWESXZlSKZZgx1KETyqb58lQv63i2ak2SaurD yj21O0/WAa/ECIlwVG21RKQEf/I1MsCTbE2ISN9WaizlYkHzqnZnQAG5lyyiVaShzOJP xk6VwLIlod2xFRQi18CzTEPqO+TeiF1tedpYnQiouh5SwSN152uCt1z0KHwUw5uWeXQm 42IsaWoYAB8Qaaa0Oe9taFGwANj5x557XmEcaxInxKyqwjL+v9kpuCukod8QUFJeNoXf AO2w== X-Forwarded-Encrypted: i=1; AKwUvBy8TCMwHV9cDLgCX7ynWz7Tn3ThXtExVf5XJq118aoIkFu+D2WLXSW9CRWa0QgQ/cpmbkrM9R/fbFrMvrU=@vger.kernel.org X-Gm-Message-State: AFq9FYJ+gLoAEYd8wZlpxkjwlUt0P6USzk8Woxp5kevKp0wvyOxRtTUv Lm6hMf+f/8OWNmcbJXOK3LSURwdtlEgwUbH/T7se1qRseHq6XUbTuy2+qwOWHQYrqA== X-Gm-Gg: AYBFou30NDHgTsq9MiirtcDheLydQCT4VLxzuTHu4Xk7wFrY19Ykc/n5PfspRR1seRB uH8YpGE/UYKEvxyQlUp9eugvdcoIDoewSHfdwy3nUpcjOjqPUGQesicDlAx+LqGmMiX5mUtSeAB jK3ovf1FzKSt8CG24VbxZSDnAQyWBeazB7+Ze4RucOxIlVuK94K+x7TydZcPAAOs1758Tyif2cU UGQApT2VQwrPVJ4dm31ZybnGB9q0szjdZ66UXtMiUmZ2Df2HGvbJ20QOvbLWup1sG9nvttkDLYx XA6w/W/MA2+Gq7TvnNKDcEy/d1klSvKDRvMApBKNWXKcK8NA7lQISGMZAQ5xtVIDgNTrDscup3n xReQCCmRwRYRVGYUgH0pjwHrCz8NABpcAwQNQl28affzJ/SQA7kdFCSQSVvl3G1WzZF+WLzZayh BykI5bgXD9D/jnkm9OIIBCkfWRJqpwqrchXetDRgNCHvXWrQs7PoxTGmeGPYfFyKiIJ8+lPdtnG LFHgRXkzhPGcg6GvwiHoCodJgT5KrZ2LqbAV++6q5UwzPvVrNAzvnjNsFyM6rYmx4+CeK8QkZh7 wLpJGxTJK5VByk4XG+q882xZexUi0uqdqayEivJLO/UQIwWtOudUUygUAhzgwCFe9VKX2tT/mD5 60PXQbZFSy5dR/zn8f70Zd3+PSQxS9BQUMsmg26/XVkT5QX3QZQLhD0DzTiSSO8dVl/OX4jUIEa ed3oaUMIyHd8A2uKWvSUvm0WJo6LK3G4Qc3QOYVZkzdjxJMJ353HUPWF8Z7jo= X-Received: by 2002:a05:6000:98d:b0:48c:4a62:9af7 with SMTP id ffacd0b85a97d-48dbaae9e03mr11164653f8f.28.1791736202395; Sun, 11 Oct 2026 09:30:02 -0700 (PDT) Received: from Desktop.vpn.uni-hamburg.de (dhcp-40-52.vpn.uni-hamburg.de. [134.100.40.52]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48db9acc936sm14657920f8f.44.2026.10.11.09.30.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Oct 2026 09:30:02 -0700 (PDT) From: Julius Bairaktaris To: netdev@vger.kernel.org Cc: dsahern@kernel.org, idosch@nvidia.com, davem@davemloft.net, edumazet@kernel.org, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, steffen.klassert@secunet.com, willemb@google.com, linux-kernel@vger.kernel.org Subject: [PATCH net v2 1/3] net: make room for the tunnel header in skb_segment_list() Date: Sun, 11 Oct 2026 18:29:55 +0200 Message-ID: <20261011162957.1328474-2-julius@bairaktaris.de> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261011162957.1328474-1-julius@bairaktaris.de> References: <20261011162957.1328474-1-julius@bairaktaris.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" skb_segment_list() pushes each frag_list member back to the outer MAC header and copies the tunnel headers in front of it, but never checks that the member has the headroom. A fraglist GRO packet forwarded into an IPIP tunnel and segmented in software hits skb_under_panic() when the members were received with less headroom than the tunnel headers need. Call skb_cow_head() on each member before pushing it. Fixes: 3a1296a38d0c ("net: Support GRO/GSO fraglist chaining.") Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Julius Bairaktaris --- net/core/skbuff.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 41beaf625421a..3f358c0fc0483 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -4729,6 +4729,10 @@ struct sk_buff *skb_segment_list(struct sk_buff *skb, } } =20 + if (!err) + err =3D skb_cow_head(nskb, offset + tnl_hlen - + skb_network_offset(nskb)); + if (!tail) skb->next =3D nskb; else --=20 2.53.0 From nobody Sat Oct 24 20:12:50 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5ACEA348445 for ; Sun, 11 Oct 2026 16:30:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791736208; cv=none; b=RGaaM3oUBMlflKzymqYucSdkJXzjlfunkASQ0+AivG0kuVWmuiRiMnbD5dHjSQEd0CXidqBF+THAANHT3eoquK53SWMN/6hDoxd+LopooqHpesYRuZoVoN7u6NxE4S/YWnnx6GhqXaC6EocyZ36C8MrYlyMMcP1+dYT7sL9hTUI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791736208; c=relaxed/simple; bh=WX8vHDmYmID6zeBr7+d02huHyl3ktS0CUyF+dqIWnWI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JQGtzfv+MGze52yCuN4A954BK+/5wO3218gPHCALHEW7UqZHjRoLIMYXuveKZO+KLGu3huLjCoCrlHk7RHQ/US5sW+vE9w+O/VqVGFcHKq4GtW904js5KOnfzGP0XUdXU5w7VbS1DwVmJl2eHtGvovlE9yoFBy8A+2MOd0zN9ME= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bairaktaris.de; spf=pass smtp.mailfrom=bairaktaris.de; dkim=pass (2048-bit key) header.d=bairaktaris.de header.i=@bairaktaris.de header.b=nWnpRSQw; arc=none smtp.client-ip=209.85.221.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bairaktaris.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bairaktaris.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bairaktaris.de header.i=@bairaktaris.de header.b="nWnpRSQw" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-487049569b6so740823f8f.1 for ; Sun, 11 Oct 2026 09:30:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bairaktaris.de; s=google; t=1791736204; x=1792341004; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=l5z1jnf6sSEmZnFFBuO6KI3hu21IqBP1eDhtrGsyWbc=; b=nWnpRSQwcWKLfFlN4ey8UigzdmAx2svWBUhSPk7RvxPfjSmP1g67chAUEp1sXzUWvg S1ISOJAZdsNhPJpg6IZvFYNtsrboGJoiCwuopEEj6IKFPc2M/aWGxPYSbC8J6A6Udmt7 57wjbNAN+xWXNgd9LSFJm5HP7r9HF5TvKi9zqtFsO5Y5uG6ldk15u1z16xtBpi0ysBY+ ZjBnmRFmC0UgLlAkGbjj6l4r+B7kKJcAOOxDWJQQjB0v/SQfG4sn7nYH9XRbaJqUWygi TWv6a+CZAIX2av1Piny/JCA4JRwTcv4k/K9RIjr3Q9CShJ/tOOpbbBQPf+JxjH3ivnKh ZoGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791736205; x=1792341005; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=l5z1jnf6sSEmZnFFBuO6KI3hu21IqBP1eDhtrGsyWbc=; b=EJv1r47DETWz+i7FuqaL0kxsn4Mialu2Bc8ZwTGnBFJNG4sggTPCoN+H5ZkjZLPVz0 9YA/g6KiP1I/hj6tcYsU+uvE8seCZKZRA7VMnwoorismJpHs42CKOBf+4RezAwRiLTkn K7oDnEf35GN72QbFAVWpBsr2dXqGy9vwpSTLR6MOCF7Bt3K+apqz8NEovJh6A7jlVvk0 HuX5BuKz2eMAjno8IZs690sYUor5pi+GMoOtNj2VI3vxYmr3lTBjACoy91im1KJJZLsj 9LardMOuoVmJuNRnlKwSWhyA1aBE8WVSofegqpPeamHnLQZ7rIJfzz0ZheOMeJDKv2pc 7uGw== X-Forwarded-Encrypted: i=1; AKwUvBzWoDjtCG4FbRv0SE7y4aJkTQeMmRHiwUMcpR7Kc0HBEFm5OImxEWeudwq/5w7njMWyc0lct1M43lgC10o=@vger.kernel.org X-Gm-Message-State: AFq9FYJN9CSGsMouMobR5SZDeFDhUTX3RVTQ1GXlCVtIs1ONXPu62ANv Ugw4wg+VbfTMgx6YX6e+cqW7txEhz3xhjiHGA00+tvPnLfUc2lOFsYDvuLZKI6acEA== X-Gm-Gg: AYBFou1B0QIbedPD+hl29LxTAf71c8jr6K+Gj7lnf+Y+Uy5ZjKOKk/4lqDts3J97Mqg 6rqUbfoAEVkXufNbA8bp3AHy0hjD0vheRrqnqTxUx9UrfhQP73poxNy/Yrkha7Ve3TYlNYRRX7N 0a6Yjm0OG9NWLmIyFI1dvG1Y28PqMB8qm4Z4VDjyEl3a3fq9l4Rgnj4CSyqBiNd43rz2GkgXqL+ O/8HhHYs23XGAiY0vC8BawUm7ZHSW8bN7lE1Bt8gOMzRMkQf2Au0p9XExevvg50TFGmecitQf0b 6IjwhIa5Cvi1Hn2Yfh5n7w7gTthf2Y82fdXLmOa1RvutPrjb7X6J8mKDae81TaZu6N+JSoQGMbp QxQoBOgNdB/iHfr1QoAAFG1kGNRvKoZt0GEtMwzyDgm3kpk5VwWDG6j2LN1i6IAwSnHzj0H1imr Oc1jRVctaqgvqZhhJfUxkiZOWWnTuz0yS5oa+6IcZC/vHepVqSj8nyd4TL56RgduKaVIJjG6ztS gC6Tl48TPSKhnyC13GDTxXJxpR5VsnesvLkTV98YRrh5kGVOhiIyxrY3FuP2l17V53Ov2I1hNnV /w3BTTYt11Kia5+yd+HHk9SJpVqvXBdSVNV6lfrhTRki/yXG+aRLuBiauqfF3WZuvLrW+/C9mxS g7zwkqXOKBa6aqlpp4lgPsU7HCoNLimqkJi8csJRuU0TVWd9HTqiXfL2w/B5ain8nGaZigfOyCt NE1fc8Y11alMvvr4KHJNcJ5cEygDiCqQLCOl0St7aPBrPj4zab X-Received: by 2002:a05:6000:299c:10b0:48a:fb3e:d93c with SMTP id ffacd0b85a97d-48dba784b80mr9543093f8f.5.1791736204398; Sun, 11 Oct 2026 09:30:04 -0700 (PDT) Received: from Desktop.vpn.uni-hamburg.de (dhcp-40-52.vpn.uni-hamburg.de. [134.100.40.52]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48db9acc936sm14657920f8f.44.2026.10.11.09.30.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Oct 2026 09:30:03 -0700 (PDT) From: Julius Bairaktaris To: netdev@vger.kernel.org Cc: dsahern@kernel.org, idosch@nvidia.com, davem@davemloft.net, edumazet@kernel.org, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, steffen.klassert@secunet.com, willemb@google.com, linux-kernel@vger.kernel.org Subject: [PATCH net v2 2/3] ipmr: set up GSO state for tunnel vifs Date: Sun, 11 Oct 2026 18:29:56 +0200 Message-ID: <20261011162957.1328474-3-julius@bairaktaris.de> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261011162957.1328474-1-julius@bairaktaris.de> References: <20261011162957.1328474-1-julius@bairaktaris.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" ip_encap() pushes the outer IPv4 header but does not set SKB_GSO_IPXIP4, skb->encapsulation or the inner headers. A GSO packet forwarded to a VIFF_TUNNEL vif is then rejected by ipip_gso_segment() and dropped in validate_xmit_skb(), after being counted as sent. A device with UDP segmentation offload is handed a GSO packet whose transport header points at the inner IP header. Call iptunnel_handle_offloads() and skb_set_inner_ipproto() as ipip_tunnel_xmit() does. Fixes: 9fd1ff5d2ac7 ("udp: Support UDP fraglist GRO/GSO.") Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Julius Bairaktaris --- net/ipv4/ipmr.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index b9c544d48c452..f0666749b14a7 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c @@ -1835,12 +1835,17 @@ static struct notifier_block ip_mr_notifier =3D { * This avoids tunnel drivers and other mess and gives us the speed so * important for multicast video. */ -static void ip_encap(struct net *net, struct sk_buff *skb, - __be32 saddr, __be32 daddr) +static int ip_encap(struct net *net, struct sk_buff *skb, + __be32 saddr, __be32 daddr) { + const struct iphdr *old_iph; struct iphdr *iph; - const struct iphdr *old_iph =3D ip_hdr(skb); =20 + if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP4)) + return -1; + skb_set_inner_ipproto(skb, IPPROTO_IPIP); + + old_iph =3D ip_hdr(skb); skb_push(skb, sizeof(struct iphdr)); skb->transport_header =3D skb->network_header; skb_reset_network_header(skb); @@ -1860,6 +1865,7 @@ static void ip_encap(struct net *net, struct sk_buff = *skb, =20 memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); nf_reset_ct(skb); + return 0; } =20 static inline int ipmr_forward_finish(struct net *net, struct sock *sk, @@ -1968,7 +1974,8 @@ static int ipmr_prepare_xmit(struct net *net, struct = mr_table *mrt, * What do we do with netfilter? -- RR */ if (vif->flags & VIFF_TUNNEL) { - ip_encap(net, skb, vif->local, vif->remote); + if (ip_encap(net, skb, vif->local, vif->remote)) + return -1; /* FIXME: extra output firewall step used to be here. --RR */ DEV_STATS_INC(vif_dev, tx_packets); DEV_STATS_ADD(vif_dev, tx_bytes, skb->len); --=20 2.53.0 From nobody Sat Oct 24 20:12:50 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8B29A347FEC for ; Sun, 11 Oct 2026 16:30:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791736212; cv=none; b=GCdVmPvVCwxZ/S5n78TDnZeB+Gq7HTOdQt/52rOE6PFgflR/FuZ34rZZUU05y5mP7qyPvK//Iwy4fR5cUpfjKbZq9KykNdHq9s7wluKQ7GLZdjBH25qfT9cxqzLhAyzWE3SqfuX+S+hseQzIdrcwIALPqie8n+3tyxsmwcIhe5Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791736212; c=relaxed/simple; bh=hEc0kCOZfiUiEVRrrIDOsGo2o7eOAQwwDExOmAG8wnk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=U8la7L22BHM/Mma1aUzzaRBUb6pMoE9GwPhEGYSuiA5rVnLJKXLB3PkQfKKadGK6xJ+HvPqiNCOSlat0Ej+loZgTPjyvABqqnU6iUTQCs4EbbaSGB2/XyE+PGTmfwEEYkMIfUG8gwN2UkAqDkl9yEqpFwCrb3V4Cyv21NDRWXgU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bairaktaris.de; spf=pass smtp.mailfrom=bairaktaris.de; dkim=pass (2048-bit key) header.d=bairaktaris.de header.i=@bairaktaris.de header.b=eUeSyPbn; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bairaktaris.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bairaktaris.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bairaktaris.de header.i=@bairaktaris.de header.b="eUeSyPbn" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4a018792ab3so9841935e9.0 for ; Sun, 11 Oct 2026 09:30:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bairaktaris.de; s=google; t=1791736207; x=1792341007; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=IAgIBxS7QL67cIVzFUUyXiPNC+DuOESUIt9z3Xwqot0=; b=eUeSyPbnBJwlGnSLeavrL4g47XL5W/IEkVFn8oxwmic4B0Y932exHyUo2bGKZ/XAd3 lmNFbDM+00R7VuhjIKRb5xhhryhvdFzvOlwYLqPF50cDTcSVj3sZVMpoCXG1VraftAgB 0n3OuS0Lft4NLR4GQ1nIecXHt86TveEVsqvP3wviHY1c/yHvOVVY8A3aNpbjTvktDV39 AI8vqRM71ySqeLFP6oylqlXWicyGjp1PnWEeyFQjzspSRSstqyaO54gc7RMOx7D518ab LJJ0cQsiUFbBFAiaXFmxU4HHjaXz+mW4W3/mAk9dQLNolfMgzTsbe9zfDfPpY/trtaBW aVYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791736207; x=1792341007; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=IAgIBxS7QL67cIVzFUUyXiPNC+DuOESUIt9z3Xwqot0=; b=YeRBgO141Ke4cd5Nk8NT1Dou8HPozWlK1rNcFldrs8rW5PR7PypZRnilJj7mdPFQO5 zhXZqRyPLd6u4zcoEeWStH/FEKWp8IDlLH+jDQtp/R1nxZZB5OgF9i77pyKpFCow+kRD FzQpb9L04nyup1wzrtUBb0Tb4yeudI5Uhev5psPbyrdh7N+/sE2bHmOye5o9fBiaIRnV 9Asn5cYkI2iT2mTsqlKrKtIpGUUpHnYxlzwCcwBodKqW8CLU5IlzTCVE3qbMQ2kz5C9I wwupM6c+M1RfJSvfzuxjnJcAIo8NfubQj/s8z9Ss4sK5pwLBfUiZGPt0jh0KVwfyI+gu eC/g== X-Forwarded-Encrypted: i=1; AKwUvBwPjF4+gLxZf6SUvuRdfJa7e/h5z956/aCEa7lmZQcni2F3cZMdr8wl6JDVi+b3FK2YGL/Q6BdLzALIWj8=@vger.kernel.org X-Gm-Message-State: AFq9FYIMfEaRqCXQTUzqc0iTEdNMwm5CTJrj1rzkMwpQJUPBvAXan3Lc cNl4lkAM0AGe7rCcGnhnrxbZX/Xpy62nm6KYJM0E3VCctr9E8FWdu2wN4XmIfPc1aw== X-Gm-Gg: AYBFou2i/miEMxYgaIzaUW4fgQ8nkR06zbkPcN43D+oOxy9UR4lix2yvKy7Ymohz2aw V3IIjZuUcjofGH4l72kggybcGPUJMRNkoBC0qTDvWeqQXS0zrThnjka0HBrZZV+2y3u4PFrlZVm nTEU42TLp1+dgyk6V8X1Y1mAODLWQ3WP+a2TafbpIjzZ4fLXcftU7WD57n9cxexk345YIhroMLg U/I0RhYyyhnE89b/ong8W7Nql1SA+k4cw9TgsR6uMwh47LXmt1VRLT6PsXBcULE8p5vvkTgtO3j VUD5/6kEE1zmKlwaVTxn9Lf7QtNgFFhvge0zkvjH7LKnvZCqx7nqSGxMZK4xpI2M9nf3NYRopw5 NlD/Xupf5C826GL9P/AcmTR51ptEfFeh4E9tJ4eIA+aWRxoV7DNNfhICs5slW3knicVgng/IxR2 HjiO5TcP47gAAEL9PNVqqzq0RZB2JkDrXnaVrC/saPJEO/CA2DZU9LgqSrHNBxQnsfUuxJhGN2i r5Zw80NAdxuxlTjW4+GRB1wKOKyR6JEze1IasUEO6uhUj7na0haflE/prDo+epTYjqTGFI5en3i 5ryf2QguvDtFQ3cr1wUvS2uyJmIdfpI0xZgiwfawKCzv+disIupfPrFRNwg3qY22+u5PzaRiz9x retB9fPPHdd0cn5TwA8HhmoEn7TVUOf56j20vfa4D7lJoYEcTIIKz1Qa/rbEn2wdhTA7y2mlHxX GCo5A6QROa9qaiSP0nR21YCdNOjukZ3pNC8FEA+x7ogdrFoIY9 X-Received: by 2002:a05:600c:4747:b0:4a1:88de:9e8b with SMTP id 5b1f17b1804b1-4a18e49d65dmr136454365e9.5.1791736205975; Sun, 11 Oct 2026 09:30:05 -0700 (PDT) Received: from Desktop.vpn.uni-hamburg.de (dhcp-40-52.vpn.uni-hamburg.de. [134.100.40.52]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48db9acc936sm14657920f8f.44.2026.10.11.09.30.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Oct 2026 09:30:05 -0700 (PDT) From: Julius Bairaktaris To: netdev@vger.kernel.org Cc: dsahern@kernel.org, idosch@nvidia.com, davem@davemloft.net, edumazet@kernel.org, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, steffen.klassert@secunet.com, willemb@google.com, linux-kernel@vger.kernel.org Subject: [PATCH net v2 3/3] ipmr: do not drop GSO packets that fit the MTU after segmentation Date: Sun, 11 Oct 2026 18:29:57 +0200 Message-ID: <20261011162957.1328474-4-julius@bairaktaris.de> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261011162957.1328474-1-julius@bairaktaris.de> References: <20261011162957.1328474-1-julius@bairaktaris.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" ipmr_prepare_xmit() drops a packet with DF set when skb->len exceeds the route MTU, without checking whether it is a GSO packet. A UDP multicast stream received with fraglist GRO or UDP GRO forwarding enabled is aggregated into GSO packets, and every aggregate is dropped with FragFails, while ip_forward() lets the same packets pass by checking skb_gso_validate_network_len(). Do the same for multicast routing, leaving room for the outer header on tunnel vifs. ip6mr has no such check and leaves GSO packets to ip6_output(). On an IPQ8074 router with fraglist GRO on, a 10 Mbit/s stream of 1316-byte DF datagrams routed by igmpproxy loses 14.5 to 15.5% (n=3D3) and 0% with this change. Fixes: 9fd1ff5d2ac7 ("udp: Support UDP fraglist GRO/GSO.") Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Julius Bairaktaris --- net/ipv4/ipmr.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index f0666749b14a7..983565c0711fa 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c @@ -1914,6 +1914,7 @@ static int ipmr_prepare_xmit(struct net *net, struct = mr_table *mrt, struct rtable *rt; struct flowi4 fl4; int encap =3D 0; + unsigned int mtu; =20 vif_dev =3D vif_dev_read(vif); if (!vif_dev) @@ -1946,7 +1947,10 @@ static int ipmr_prepare_xmit(struct net *net, struct= mr_table *mrt, return -1; } =20 - if (skb->len+encap > dst4_mtu(&rt->dst) && (ntohs(iph->frag_off) & IP_DF)= ) { + mtu =3D dst4_mtu(&rt->dst); + if (skb->len + encap > mtu && (ntohs(iph->frag_off) & IP_DF) && + !(skb_is_gso(skb) && mtu > encap && + skb_gso_validate_network_len(skb, mtu - encap))) { /* Do not fragment multicasts. Alas, IPv4 does not * allow to send ICMP, so that packets will disappear * to blackhole. --=20 2.53.0