]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ipv6: use __skb_push() in ip6_xmit()
authorEric Dumazet <edumazet@google.com>
Fri, 30 Jan 2026 21:02:58 +0000 (21:02 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 3 Feb 2026 01:49:29 +0000 (17:49 -0800)
ip6_xmit() makes sure there is enough headroom in the skb,
it can uses __skb_push() instead of the out-of-line skb_push().

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20260130210303.3888261-4-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/ip6_output.c

index 5c2cfcc3cf6e56192123c5830250865d37e72581..279d4daa85c442eb3db8add1d97c57c1ffbe820f 100644 (file)
@@ -314,7 +314,7 @@ int ip6_xmit(const struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6,
        }
 
        if (unlikely(seg_len > IPV6_MAXPLEN)) {
-               hop_jumbo = skb_push(skb, hoplen);
+               hop_jumbo = __skb_push(skb, hoplen);
 
                hop_jumbo->nexthdr = proto;
                hop_jumbo->hdrlen = 0;
@@ -327,7 +327,7 @@ int ip6_xmit(const struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6,
                IP6CB(skb)->flags |= IP6SKB_FAKEJUMBO;
        }
 
-       skb_push(skb, sizeof(struct ipv6hdr));
+       __skb_push(skb, sizeof(struct ipv6hdr));
        skb_reset_network_header(skb);
        hdr = ipv6_hdr(skb);