From nobody Sat Oct 24 20:42:34 2026 Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) (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 E2B3F4A2A53 for ; Sun, 18 Oct 2026 12:59:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792328342; cv=none; b=XcgdLD8bzxgMVSz39g+zIM7M8MpZqiVt1McVubRiIxhuoODSGyCix1Dicvc6YPSREHsAkm+m8qCGW5maJcsYgR0ispH8XFVOGtAuNUQ5xyOF7g52+HHVHzfe2RCkntmyEHGnNSZcemeT6HdcvoIYazLp5dKFfx82oKS6d/NLm6c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792328342; c=relaxed/simple; bh=xih+s2KFtttYTx6T74aVSZMuDsuhlUy7Svwh5hrbQI4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Qie+4b53ksswqGfDmSxQ/XAUYy5kByDgckPsEv+vQxhPxXy4Ld+qUtNWdrtKHgdlkvjpb3oApY69BqByAuX8IdDYXqs427fGz/DM4ON8Pdh5LQ5Ff6AEVQfx9DCoMFoLbWqRuhOEZ07xNg21J6X3uuSfGKVRziGADuPsN3n9fEw= 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=X5X/n7Yk; arc=none smtp.client-ip=209.85.208.49 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="X5X/n7Yk" Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-6b2237b596cso1764579a12.0 for ; Sun, 18 Oct 2026 05:59:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bairaktaris.de; s=google; t=1792328339; x=1792933139; 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=bv1EJmOK7h8sNxkOvCcPCKfg9hj7RXyfrxtzfcwxHvM=; b=X5X/n7YkkgWgkQMDYSdEVQRD4r+5Fz86d1imAGRBLy9er5bTVxYSQbNsHkN7UqeE7k xzn549gJwTTtWUIc5DmapF+o6oD3PI+eSgNh30HUxodr+ijJOf2SghJExs64Tp5MOKdB q8cU0YwAXOEHpa0QFOaERX3JkUUDBxm+c3Kg4CXSKF32WvKOEC897CWGZ5t68x+c68Gn 6Q8l9otyaz6ewk9VCKM35cX4oNn3tSzbBH1jECw6I5jrHUAfB/NbVvXea3p4iQ4HNsBC mFmEA8zyar/b5ImPUjv9PxPO305EKWR1vBjOhuYQejw5D92pbTMZWLw4/9AsgOfs6WEg B/ZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792328339; x=1792933139; 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=bv1EJmOK7h8sNxkOvCcPCKfg9hj7RXyfrxtzfcwxHvM=; b=mtXFfWX5LdkZkg0eSuimD5TdOUqCFJOsJyGHZnGMzZH13lHPD6vDArvHxr45SvtylG TUsWAuqAaRPy5YG3aR4UXJZHTZ24CrkHuaN5ayMpy/CzruBqqk30zO7cRTEHL5BCvzv4 wGmQ9ITBGRc6eI8k1pzVhoDRl/AeCCTBwFuue1xJC8J6Tp9vD8oYLZGRpYs3eBOSLIKs HQ8Xk+PDIZ9e1c0pOuKOT0qZi7z0ofNhE2u1azzqwBhyyF0BK597GOkD/2dStiRoQs7/ h8vSQL1rZTHp+WepUOpBlrcIaJEZVmPeuxvyYNiQF7N4/x/3h7Bus97gnWVxZ+F2fC2r gpQQ== X-Forwarded-Encrypted: i=1; AKwUvBye9WeGYbz66M3tyDGpv11MsM63iPdszAE3eW1XDWVLHOL2RYXd5vw7hOC+m2TRYOtqTffa7yp89rHJ9Ow=@vger.kernel.org X-Gm-Message-State: AFq9FYJpxoNyMWZrtiNKgWomNmh/GIWZ9HHXtZ/3RtAs5J4fA3rBA893 0oJYgrhPv8GdId6oeKYttAh53q1SyG919G3gbIkjacDaBLpGXWuzt85abSA4/aIJ+Q== X-Gm-Gg: AYBFou0OO8Wpm1HUimFSRDRDWDQLBm5AVGPShujvUcrQlUvl/LLClNRfsEZ6Uij0/Ex NlMroiJfjESIQl8BOg+2SPCZwSox/f4hFBLXK05lshMNKFGbrBlO34QrFnABgJWQRL3DiOoJWK9 yKesKHlxUYyMxTiAHdf29C7rHeTI7mVwUmOkZKuq/yR4yEAS4GRcZdFhAwVKrY3dIOVa7QNY2OX P5SqSppb6YHvRFCQRONSfn9Kmjpc6EHf3VvX4K/ltwCfQBsjPuW6sRyA0dlGLjAnBvCT1I5Ve8i Cj06a3ZrROoKvNbCqhaFY9GOrNrSFJXQ1HyK+p9+UXqozGEM9AM7KK8FWihNRDkWT2BRijc8579 lQwZ+ycgfXLGFKDCud7dw2+Bo16zP/rxCddO9fxbb07fEz0zIgT57Z8c58bNwytfBi7tp/u8K/p 1L+VwsmUQU5/l9NUxlDBWcD7xibCcWJOGSwuKVaVGWtfj618x6jyfTSfWOxuA4EEzPT24HFjQaF BQwgePWJHMcmptQfTynyuP8VTkFpCABjVFGB2jZziUrOkBvwwPIUgFquvGB25SqPWRh2mUFBE7r kZdDdyQ6oYVfa/WW7ZKHX9XMSbkKur+WJ2sB6RlVAf6sMjsFWT0NwAnOOPLyeaSZSChs+Uo2b1l gze8iBkJF5vMayje53kCvAEn2Pnji+DSiPUdh//KMgvQOjCwUcPa4ugydvRVsjLOt+RZ6ohXXlw GNC0FEFmg+ X-Received: by 2002:a17:907:9720:b0:c24:6f60:3f7e with SMTP id a640c23a62f3a-c419a846304mr373018066b.2.1792328339174; Sun, 18 Oct 2026 05:58:59 -0700 (PDT) Received: from Desktop.fritz.box ([185.181.130.213]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c40912ce05csm259032066b.33.2026.10.18.05.58.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Oct 2026 05:58:58 -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, jiayuan.chen@linux.dev, mfleming@cloudflare.com, almasrymina@google.com, bigeasy@linutronix.de, richardbgobert@gmail.com, ecree.xilinx@gmail.com, linux-kernel@vger.kernel.org Subject: [PATCH net v3 1/4] net: make room for the tunnel header in skb_segment_list() Date: Sun, 18 Oct 2026 14:58:51 +0200 Message-ID: <4e860f6164233f06f80a604047d817322a0c9870.1792327155.git.julius@bairaktaris.de> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: 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 a tunnel and segmented in software then hits skb_under_panic() on IPIP, and on VXLAN the copy writes before the member's head (KASAN: slab-out-of-bounds write in skb_segment_list()). 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:42:35 2026 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (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 D4DEA4A2A57 for ; Sun, 18 Oct 2026 12:59:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792328346; cv=none; b=LBgySRQKa7kKZKiF3nxcPMCILbiyPdVTwMh+Tymj5tm+7VOGYNyVkoKfXQ3ERZ7pq7+AAL3lqB2nvbrTOI8G7oPeD0VNLAKGKS/XrZxSJ4ajk4x345nIpaIOJBOtzsKCoj+uLNtDtF2+1lK9VsWFz7UI/8txQ4+FVePmEYiI4pk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792328346; c=relaxed/simple; bh=8AgZcyfplCfNaQ9wKxTOpfCs8+Fbgo88uxJRdzeoefk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lwl5oLX6ONIoKR5Nyp3gryjfQcO1G2EIVbzBrn8IQOUPiFz2LdQTa3Kzt8RHiizt99DMBWx0fydFiaTkv6dQMIHrNJb+fqPNZ7uG/FMfx16XrrOszeJmN93xN5xR85ylyqfOoBpTEStO7aPe3ZHpCOOGB95HBKfcsERCgcnYGMQ= 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=sHlh1FYI; arc=none smtp.client-ip=209.85.218.48 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="sHlh1FYI" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-c2055573c8cso144437066b.3 for ; Sun, 18 Oct 2026 05:59:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bairaktaris.de; s=google; t=1792328341; x=1792933141; 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=iAVGT6mmXXV7gd2pst8rSD4EZFUw8guUet3I0hNK1I4=; b=sHlh1FYIG/V6Ift3HSOK5bTe1vOeZ+SKY7PXg6r5znC7pf6Z30mDk6hp3Y3KNnzSI2 AgzZc4bRJa8FwQFyFsZVWFrJPXnalfUvyaHIJvAhxKcvLpwaSVSv3zrC2rzDV3EjJaX5 /0Jw5QgsBWwGSvbRbjkrZ4VAiMZXJL59qP+hrYRUZWTlzHJPiFvX+OtdEKr16OKbK9Ts boBHFBJeuGiNIhgF4/tHMrH25xg1apSAKLGeAUgvtgYeifiA8BSF4b8raz8rk9hc0U23 uOU1tIfTAmjd/kL59+R5vSQxvfH1EjEs3WazLW9MDkyo7D7FRSRWydMTquaQHp8TXl3Z 6qpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792328341; x=1792933141; 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=iAVGT6mmXXV7gd2pst8rSD4EZFUw8guUet3I0hNK1I4=; b=sM/CkZtpAx3iUiTr0oS4GyYujDFGX7MD2C4c4uaI89p6DH0ta/daNXHkFZggpa3bvv yBVV0JuciefqbDCFt2inXwGDeLuKcksnYdNZpGd0G1oMO1EpSANf4LciuagMDVv81uIq WekXSGFKts+9RdYBKIn1teaicGBn1fOPrOH+MAcHgOZmUSrbtZWLcBFClft7S2awd/EV PMytoUh73ZG7ixMAVH9ebapcjLJuXDuV92lERX2SuL4IMf7lVjNIdFP401QF9SKJpAWQ VoedNUiZPa+IYS0t1sGoe7+MfHxW9qCIgy3LwnruXUUEn3BqKE90VINhwCetcB2XfTn4 5+Kw== X-Forwarded-Encrypted: i=1; AKwUvBx4AAx+Fy/UHHyjRzUgwo8d0vrInRAeO3t0CBKx04R/E/NthcPfmLzK8bccY9Z4ZShWyZjwcD+DN7RArfA=@vger.kernel.org X-Gm-Message-State: AFq9FYIHjOVtaiFf06BlTHwyN9jw1+GAzcWKFRdnKics8rZHWI6tYSXS uDciiSNQVfzSEmY7qwdMQ+Mh98PAzkmO89EhRC2PHG57yBbrBC4EFvwyRJoCCHAy3Q== X-Gm-Gg: AYBFou3cD6njay6tBKSs2nxfSUoKLZfeuKoHA1QLhQkBdMcY9TCXYyrw2BSwnaOPWHT QWrxiy2EgCdJ84KjTNyHFZBvxaQzJFYGp3gf4xyXzn/B9Ga/djdSUJwdbWw1Xb/xVlayE70ctXE wMHrwPSroNbFpnPFTo9PxeBEHL0cSt/QIJhIRFTC5rz7cXt0O85L/Jx8JK0bsu4Z8Ra9b68/chz t/1QGrDkesIk1w0Gvkt4mnkQdxg0swJgB78+D8koPISg8SNZkL1Nyj/gNRGHGHlc9FaOmQnunne 3bIHXYDfgvkqhAwX4blTNG3ZB1JqVIPplGfUBvs/rqrmwhAReKUnm78crEVIsuu31wkE0u03ni5 YVR4ytkDEQYp7VCudao8nTEl0c8gQdpwn74y6bUjYKJ8bORaSQ/TFYZ+1g3kfBtuB8tTbqy7Ttj jeonNu/6Aj9JHtLC5wENtdLTUOnNm+qZY/ktRthYPJs4ErQIyqcAYtuGn3gpUU0jc00xB9IOyP4 88MOJ6FbbLqEebXDnYrGSDdn4rDB1OW5k5yQYlgZEEXTuAvdqDKWqsQkf4/+7gXLhWB5IygwyJr qtz1d/1A7EvkTOyjcYuS7bbMRVEWXrpdM36EHL1BLiE/ixQoA2Cq3RUK4gFWmDnLhyspeFBs7ve 4CxaupLG3FxrDM4A2y2dexJuEkAlpHCip6EDM4Oicbat86VZo6KCYlG7yAOZvUqaVIa+ZFgwFut TsI8K3AKUei0x3LFGi260= X-Received: by 2002:a17:907:c305:b0:c2d:c739:30e1 with SMTP id a640c23a62f3a-c419f90490cmr308794366b.32.1792328340965; Sun, 18 Oct 2026 05:59:00 -0700 (PDT) Received: from Desktop.fritz.box ([185.181.130.213]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c40912ce05csm259032066b.33.2026.10.18.05.58.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Oct 2026 05:58:59 -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, jiayuan.chen@linux.dev, mfleming@cloudflare.com, almasrymina@google.com, bigeasy@linutronix.de, richardbgobert@gmail.com, ecree.xilinx@gmail.com, linux-kernel@vger.kernel.org Subject: [PATCH net v3 2/4] ip_tunnel: move the TCP fixed-ID flag to the inner header Date: Sun, 18 Oct 2026 14:58:52 +0200 Message-ID: <44dce02a36429356aa12372bd928fc79d45bb965.1792327155.git.julius@bairaktaris.de> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: 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_GSO_TCP_FIXEDID describes the outer header of an encapsulated GSO packet and SKB_GSO_TCP_FIXEDID_INNER the inner one. TCP GRO sets SKB_GSO_TCP_FIXEDID for the header it merged. When such a packet is forwarded into a tunnel, iptunnel_handle_offloads() makes that header the inner one but leaves the flag, so software segmentation gives every segment the outer ID of the first and increments the inner IDs. Move the flag to SKB_GSO_TCP_FIXEDID_INNER when the packet becomes encapsulated. Fixes: 3271f19bf7b9 ("net: gso: restore ids of outer ip headers correctly") Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Julius Bairaktaris --- net/ipv4/ip_tunnel_core.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/net/ipv4/ip_tunnel_core.c b/net/ipv4/ip_tunnel_core.c index bab42b9e277f7..752ddba1298b6 100644 --- a/net/ipv4/ip_tunnel_core.c +++ b/net/ipv4/ip_tunnel_core.c @@ -174,18 +174,29 @@ EXPORT_SYMBOL_GPL(iptunnel_metadata_reply); int iptunnel_handle_offloads(struct sk_buff *skb, int gso_type_mask) { + bool inner =3D false; int err; =20 if (likely(!skb->encapsulation)) { skb_reset_inner_headers(skb); skb->encapsulation =3D 1; + inner =3D true; } =20 if (skb_is_gso(skb)) { + struct skb_shared_info *shinfo; + err =3D skb_header_unclone(skb, GFP_ATOMIC); if (unlikely(err)) return err; - skb_shinfo(skb)->gso_type |=3D gso_type_mask; + + shinfo =3D skb_shinfo(skb); + /* The header SKB_GSO_TCP_FIXEDID described is now the inner one */ + if (inner && (shinfo->gso_type & SKB_GSO_TCP_FIXEDID)) { + shinfo->gso_type &=3D ~SKB_GSO_TCP_FIXEDID; + shinfo->gso_type |=3D SKB_GSO_TCP_FIXEDID_INNER; + } + shinfo->gso_type |=3D gso_type_mask; return 0; } =20 --=20 2.53.0 From nobody Sat Oct 24 20:42:35 2026 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (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 16A924A2E1F for ; Sun, 18 Oct 2026 12:59:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792328349; cv=none; b=l8aPBUz2hCQkNaFayReV8gjh9ZtM+4ucW70YBG3x+WTOnhpdp0kTU685h5U0Bu0XlmZG/44TXh2RjOVA+7KPHUHkhe8Mu5fa10wxUTRJAogYm3JQmegyVe6HyIhtbHiAOw5HVi01siw++CESMEoae2V0kB1RiiF1wf7vxFizEKs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792328349; c=relaxed/simple; bh=T7bO5vskgi4wdKqqOvcqgB8KIqtxNl+r9o5C3t6+Tps=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nLmQM80fcHsIHdjCT2HWX2woBVCo1yUlw1//DrjGdtmRDDbM1U6Hay1Lo9/YUIDptZqjVwBJMRtYlAittETh4313l7lPZpN0PKWwgH2wbRbC4/jx6j51T7VRyLWqcpbYLWz5DbXvXKV5n/Sv/tFuobZmC2wslt38VrWVXxbn6ss= 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=jCX5nsAF; arc=none smtp.client-ip=209.85.218.46 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="jCX5nsAF" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-c4322d310e7so52329266b.0 for ; Sun, 18 Oct 2026 05:59:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bairaktaris.de; s=google; t=1792328343; x=1792933143; 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=GTgCp4IrBiqN7a3kGTWquJfuTdWShdwpAuqeHd8VlDQ=; b=jCX5nsAFAnBpGoPk0WEgIrn7PXClaNl05ZNl3x36GEDIgU+lWGNNZkBsiPdAO0TsH6 5h2seyHjkX/Kv57JHbP0cIJU/QJoa81g22ICNU/+NSifvoNYWDnGUHB+wvJKP//STnJb L0zC+6QF6H/x5jZTBPk8iDszTtkUgSSv//kqvtZbrchZ5RMg0BsdS7u3A+5jvQCwAUnc OdhivZKLgF+038N/GQJd1KlGoyfP0B3JVqY7f0IIaRf+zsto7PxG5MXIfnA6AmuPQlSJ ky5BbpsRcy7nIQXVnPFoA6mfzBG9MopOMlQHFXkcgi4t8n1sda6k/Qbg+bDe9D5c8KgW 8bug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792328343; x=1792933143; 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=GTgCp4IrBiqN7a3kGTWquJfuTdWShdwpAuqeHd8VlDQ=; b=mLCrgLjJfbqOUW1ZvJ+nFKI2iryuDVhZUUXNQTUHkiwhPuGByV49XWO4pHr7vNZ3wo HIG6j9DTaq3B7cvgbAukm+B8bCZbwTujs585OQyKa1acSgD4xfdjiqUzZ4nS1JAtj56e KGjI4IygdSacNfGN4ALTqJ2J0ieMGMuPj6wx/uwc5NsW7uaPTwTKMkMsUInvtQ5G6XBq 8/3zmYws2TQ8RSNbNnWGbGKqV3Io6zRrPwUIbrPl50ufFkfqaC8sSwbM+IRqO9iotYoT AM5Mpm92Eb+W9DADWhXbzZpgF0SZ1bHLOWGH8rXa4wE9tnQCGdVwCr7ef4eMyfu3S5Zz iqnQ== X-Forwarded-Encrypted: i=1; AKwUvBwt5j1CTbRPGw6gou+H5F7cA7isjISmZVj+PSU03eASd/iRUQeM13aooljwF/iW5T5ZwU3Nl0NcCQmIYOE=@vger.kernel.org X-Gm-Message-State: AFq9FYJ3tALtAzPW1i7rUHw6auHt4CWu35zFAvCVn2p/FglZmgVgDYXy xB6sKC3y5firCIiBAeryvI33EYvnP5THoGtJzbeM4WK7BeMRGmxPJabcMMX1aA6C0g== X-Gm-Gg: AYBFou18o9L+Z9PK72Q1Y6iDLxSAFtwyzWIvsC20Ai/Qwc1zpveN1ZsYIIfPXA8miqz q3JG0aFTaTaZ+Qju7LvF3dwvISmIiKWRtfq3F3cABPPgsQzohEXZZsrPnwNjMLupQ7uuj/+qwWQ A5kw9/aW35wuVXt868s4JARf5DJ7PvKW3DchSrAFG16V5oeE8lGbZmiUMy0VdBrJw2quhVskfN6 LZJB+JhIVIdGt2tx2lZ1PkQZ2sKii1yK7zH9upLEyAzHhPmbcCoYWWSM0N4F3zyWfpsCqg3oqU5 asKtABpH4k1JD2Rq7/JqievlRW7RtELLHtjInfsunpzrr1Wv2lPKlW0XL0pgPEHgKVaNQQtZMCg Gkrt89ZlTlG63EGGGJOWHDIHF1nordLw+pkegF3vcieJanbj7O7wXti063f3Y6rRKqVdPAXXXde tZKdstYFHFagdnOAZ9j4N48bnL7B09wvn9DVA++75Mj4zVm2rlkwRXPGNrXWXVGa+kPnsC5KMSD E1t3ukrHe7+SpUb+VFgI4Ci4YcU7KSVauJm73oSIoRqKOhHLABdPVWH1nbuk4Pm4V6IcQ+cOT5K +QbJWXH80f9sxd7yAXy/ksgYYxS9TO1m/erh182t3YZ9W1gSwUs8mROVeLKmFpxNCHx53wcCfbX p2xWf9QmL5lhYt1142JacDtZOhgXN4ldKTfcCdph0ZR0Pd2AmDRg/JW56mfIA641t08ZGW/I/E3 w0aYijdKZG X-Received: by 2002:a17:907:96ab:b0:c3e:f39b:2286 with SMTP id a640c23a62f3a-c419699e001mr345304966b.0.1792328343308; Sun, 18 Oct 2026 05:59:03 -0700 (PDT) Received: from Desktop.fritz.box ([185.181.130.213]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c40912ce05csm259032066b.33.2026.10.18.05.59.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Oct 2026 05:59: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, jiayuan.chen@linux.dev, mfleming@cloudflare.com, almasrymina@google.com, bigeasy@linutronix.de, richardbgobert@gmail.com, ecree.xilinx@gmail.com, linux-kernel@vger.kernel.org Subject: [PATCH net v3 3/4] ipmr: set up GSO state for tunnel vifs Date: Sun, 18 Oct 2026 14:58:53 +0200 Message-ID: <5b5fb061bec2fc8d75c448b41159e0e338c89cbe.1792327155.git.julius@bairaktaris.de> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: 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, and reserve one outer IP ID per segment as iptunnel_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 | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index b9c544d48c452..6f2eb571f30f7 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); @@ -1855,11 +1860,12 @@ static void ip_encap(struct net *net, struct sk_buf= f *skb, iph->protocol =3D IPPROTO_IPIP; iph->ihl =3D 5; iph->tot_len =3D htons(skb->len); - ip_select_ident(net, skb, NULL); + ip_select_ident_segs(net, skb, NULL, skb_shinfo(skb)->gso_segs ?: 1); ip_send_check(iph); =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:42:35 2026 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (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 B06494A2A69 for ; Sun, 18 Oct 2026 12:59:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792328348; cv=none; b=OD80PSluosj/p+astxdRXJLbKNnhcpijQNNUWDiipTd8w4ho4FVl3fx2YvNyLpOz/2sgV/3O2cxfkhQlm2nLDZ2PxqTSfeIriYCY+R3JyBRtDXCCkPyJl3wW97UeC3Uho4szAjnOjQALvdqyPbSDadwFSkY105fetY8lPOwV57Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792328348; c=relaxed/simple; bh=nWS0ydmrO4FpPtgExlGrGBKn4Swl2QUnK8Q7wPcpPf8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qlBYnIDck9OVLM3yCmIjJ9DmR2+wmr3Z6bY/EhPi/Xk4OncVhOwWFseUey9cXZXXk80vgeqU9gBp+UI0HojU3qkXc//vkL6c4d+X+w8Afs9xfRuxWwZYMlt6uK8JaQeHq3qLdqq9E3W5V6amIgLoF92xlaGHh+veqmYIG6V6ang= 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=fVnKhipI; arc=none smtp.client-ip=209.85.218.42 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="fVnKhipI" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-c2dc63f8d8aso199488066b.0 for ; Sun, 18 Oct 2026 05:59:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bairaktaris.de; s=google; t=1792328345; x=1792933145; 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=mzu8LVWuEVBDU9lAlwBSEvZPtderP+BauzcapsS8E9A=; b=fVnKhipIoGeId8TdF/Z6g9LI43UOZLwMbalZnC2C5aG/YYEbIGh/OoW5TGfVM9aHl5 aNX+qUaUErc59ux32N7PzWd5sSjEXFgZycNjt14U9mgPAmETpS4x+rVanzLy4cj4kzMo aDmPaOjOwACVCzxpuUNigJPckCWAsdHPPKdE3Ei1dHE54SLNQgrJ5eIZidz0E33FEH2X c1Fu2Q5RshvxipWebxzlTPBMcXxMXk/vSERK1RLSzefkri/1/tBZHQoaKSot8E52LqiF 5OsSjZIbH/npaPFcdsgQWr4Yce2TsS+UtqJl8OAZ2z710HIcq4SmdS9WiHnZEImdatj3 48Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792328345; x=1792933145; 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=mzu8LVWuEVBDU9lAlwBSEvZPtderP+BauzcapsS8E9A=; b=JrENvDIEHD/I6ISQewPlvASUairyGup6PpTraDhJjfay1wFeelSaU6AZKi1tHbRjwl mUAbAuJduP5Qu1Q/mrjB3AZ52HnuoIcYf+DdLQGrlltdwOnZuUFOWaSB3fTKCMLuN2Hw NG4JHYgB5UboZZfVmMDBVOBb7R+dWW/XH7RrDh7inlCKqNuZ2cPBmhz0oJRU3Rr71oCS SQn0o/G/KfPEKMWHRSXc5VBu0kfuiyHNykx6b6rZJM7tahL4qqnA7kywrsin/asJHUSW TZtojZnVhbM0ZPZwxw8lcyYjLQ4qfOqcsTJtkrJd5opEl22p5xkfPB6X1Xe4Ds8FLdEp bSGw== X-Forwarded-Encrypted: i=1; AKwUvBxb5WLST7fuBPaYa9JUrRVgsW7zMOfwcdBpDY+VNpBo4v1o+xA4U+NcykP73x7XIahZk+kjMPOpmf3KYCE=@vger.kernel.org X-Gm-Message-State: AFq9FYIJsUUpT1G141CDNsYb8ykgdRFZFFS+qoXEvOkNKqootbaGBpVC aPbUyXtqn50on8dQsMm1I+FvPLIfuw1HHVNrmzrUNS9E1fkT7+vDRHuctrRoxAwKxQ== X-Gm-Gg: AYBFou3E1EC28nSTbTB62Zn/16XhrZ2Iqpu0gdDSuFSBiHVG7uXdfFQaubLwbAv+hR9 Rbp8Edtr5AsFMK0RAZTaBMVh6Y+sF0Q8Sa77K2KOQLQ5ex2Eh4RFP71fF3Rf+r8g/EJ10ip0bwP AcbkpSvK9tM4x2TzPpnfGJwGwNM9grw6g5gbxLwPlMGWvWQelCpjEFA/GIwqR2RYunzHxLWTd8Y L2M0DEIse0Tvqm0GoqFTsYWZ25NUvhsSyHApo/sZKc1XSzjIF9ijQHl5EjAHMGJkhSANLnnl/W6 kRdgLZ4uMdc1PkUVyNCrIG3paen7HRAibRkeeoCtLuB59YBPUDHGOQwOqxt+2XZ7g9znluNcR2h 0whRMAHkNJGjiEldWnTbVX3CjgcZ4ghS/SQderd11kS2s4768bPHzEoHeR2ExeBG3o5aUi0V2WV cYZgt0YMfD0+yU6jgeMuLzHHoA+eSRzQTberqjyDrcUdr6wv+MTSg0z7NP+KdakV6N48sDAwFhe boRneeLO5VmVjvazLNK1BF4JcNu0NDn1fiCs6EEgADt+72etBS6BiX7U3f/cIFQuzfcflDAxN01 9DovDNg/M+lLBHu85HEWwSUY3zEwucrZHAzRcv+ZRJ8dxiyJ+/e4osZLsCxrhpRuOajSxtcYZ+7 Ax6AGxGOABc1dDkjbgtiW7tpNkxWX1h6Xy8O1qt/8VnASbNT16E+kPqXxeGB/ot4LsuvBXitkiv tBonyD2B37 X-Received: by 2002:a17:907:3d50:b0:c2d:ca32:2176 with SMTP id a640c23a62f3a-c419d540bd9mr324041566b.8.1792328344943; Sun, 18 Oct 2026 05:59:04 -0700 (PDT) Received: from Desktop.fritz.box ([185.181.130.213]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c40912ce05csm259032066b.33.2026.10.18.05.59.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Oct 2026 05:59:04 -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, jiayuan.chen@linux.dev, mfleming@cloudflare.com, almasrymina@google.com, bigeasy@linutronix.de, richardbgobert@gmail.com, ecree.xilinx@gmail.com, linux-kernel@vger.kernel.org Subject: [PATCH net v3 4/4] ipmr: do not drop GSO packets that fit the MTU after segmentation Date: Sun, 18 Oct 2026 14:58:54 +0200 Message-ID: X-Mailer: git-send-email 2.53.0 In-Reply-To: References: 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 6f2eb571f30f7..0a2c573ceeb79 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