Package: src:linux
Version: 6.1.180-1
Severity: important
Tags: patch security

Dear Debian Kernel Team,

I noticed that CVE-2026-80725 is currently vulnerable in Debian Bookworm 
(6.1.x), although it has been fixed in Sid and upstream.
I have prepared and tested a backport of the upstream fix (commit 
81be30c1f5f2bffda1f04c0efd0746af10b9643a) for the 6.1 kernel tree.

---
From: Alice Mikityanska <[email protected]>
Date: Thu, 5 Feb 2026 15:39:16 +0200
Subject: net/ipv6: Drop HBH for BIG TCP on RX side
Origin: upstream, 
https://git.kernel.org/linus/81be30c1f5f2bffda1f04c0efd0746af10b9643a
Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2026-80725
Description: Complementary to the previous commit, stop inserting HBH when 
building
 BIG TCP GRO SKBs.
 [ Daniel Pereira ] Backported to 6.1 by removing memmove in ip6_offload.c
 and adjusting iph->payload_len logic to match 6.1 context.

Index: linux-6.1.176/net/core/gro.c
===================================================================
--- linux-6.1.176.orig/net/core/gro.c
+++ linux-6.1.176/net/core/gro.c
@@ -182,7 +182,6 @@ int skb_gro_receive(struct sk_buff *p, s
 
        if (unlikely(p->len + len >= GRO_LEGACY_MAX_SIZE)) {
                if (p->protocol != htons(ETH_P_IPV6) ||
-                   skb_headroom(p) < sizeof(struct hop_jumbo_hdr) ||
                    ipv6_hdr(p)->nexthdr != IPPROTO_TCP ||
                    p->encapsulation)
                        return -E2BIG;
Index: linux-6.1.176/net/ipv6/ip6_offload.c
===================================================================
--- linux-6.1.176.orig/net/ipv6/ip6_offload.c
+++ linux-6.1.176/net/ipv6/ip6_offload.c
@@ -350,34 +350,8 @@ INDIRECT_CALLABLE_SCOPE int ipv6_gro_com
                skb_set_inner_network_header(skb, nhoff);
        }
 
-       payload_len = skb->len - nhoff - sizeof(*iph);
-       if (unlikely(payload_len > IPV6_MAXPLEN)) {
-               struct hop_jumbo_hdr *hop_jumbo;
-               int hoplen = sizeof(*hop_jumbo);
-
-               /* Move network header left */
-               memmove(skb_mac_header(skb) - hoplen, skb_mac_header(skb),
-                       skb->transport_header - skb->mac_header);
-               skb->data -= hoplen;
-               skb->len += hoplen;
-               skb->mac_header -= hoplen;
-               skb->network_header -= hoplen;
-               iph = (struct ipv6hdr *)(skb->data + nhoff);
-               hop_jumbo = (struct hop_jumbo_hdr *)(iph + 1);
-
-               /* Build hop-by-hop options */
-               hop_jumbo->nexthdr = iph->nexthdr;
-               hop_jumbo->hdrlen = 0;
-               hop_jumbo->tlv_type = IPV6_TLV_JUMBO;
-               hop_jumbo->tlv_len = 4;
-               hop_jumbo->jumbo_payload_len = htonl(payload_len + hoplen);
-
-               iph->nexthdr = NEXTHDR_HOP;
-               iph->payload_len = 0;
-       } else {
-               iph = (struct ipv6hdr *)(skb->data + nhoff);
-               iph->payload_len = htons(payload_len);
-       }
+       iph = (struct ipv6hdr *)(skb->data + nhoff);
+       iph->payload_len = htons(skb->len - nhoff - sizeof(*iph));
 
        nhoff += sizeof(*iph) + ipv6_exthdrs_len(iph, &ops);
        if (WARN_ON(!ops || !ops->callbacks.gro_complete))

Reply via email to