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

From: Ido Schimmel

Date: Tue Mar 24 2026 - 04:39:47 EST


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?

> 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);