Re: [PATCH 05/11 net-next v4] ipv6: prepare headers for ipv6_stub removal

From: Fernando Fernandez Mancera

Date: Tue Mar 24 2026 - 07:26:13 EST


On 3/24/26 9:22 AM, Ido Schimmel wrote:
On Fri, Mar 20, 2026 at 07:55:57PM +0100, Fernando Fernandez Mancera wrote:
+#if IS_ENABLED(CONFIG_IPV6)
int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
int (*output)(struct net *, struct sock *, struct sk_buff *));
+#else
+static inline int ip6_fragment(struct net *net, struct sock *sk,
+ struct sk_buff *skb,
+ int (*output)(struct net *, struct sock *,
+ struct sk_buff *))
+{
+ kfree_skb(skb);
+ return -EAFNOSUPPORT;
+}
+#endif

[...]

diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 8e2a6b28cea7..79f7ee93ceff 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -873,6 +873,8 @@ int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
__be32 frag_id;
u8 *prevhdr, nexthdr = 0;
+ if (!ipv6_mod_enabled())
+ return -EAFNOSUPPORT;

Free the skb?


Ah right. Makes sense, thanks!

err = ip6_find_1stfragopt(skb, &prevhdr);
if (err < 0)
goto fail;
@@ -1045,6 +1047,7 @@ int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
kfree_skb(skb);
return err;
}
+EXPORT_SYMBOL_GPL(ip6_fragment);