xfrm: remove hdr_offset indirection
authorFlorian Westphal <fw@strlen.de>
Fri, 11 Jun 2021 10:50:13 +0000 (12:50 +0200)
committerSteffen Klassert <steffen.klassert@secunet.com>
Fri, 11 Jun 2021 12:48:50 +0000 (14:48 +0200)
After previous patches all remaining users set the function pointer to
the same function: xfrm6_find_1stfragopt.

So remove this function pointer and call ip6_find_1stfragopt directly.

Reduces size of xfrm_type to 64 bytes on 64bit platforms.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
include/net/xfrm.h
net/ipv6/ah6.c
net/ipv6/esp6.c
net/ipv6/ipcomp6.c
net/ipv6/xfrm6_output.c
net/xfrm/xfrm_output.c

index 1aad78c..c8890da 100644 (file)
@@ -402,7 +402,6 @@ struct xfrm_type {
        int                     (*output)(struct xfrm_state *, struct sk_buff *pskb);
        int                     (*reject)(struct xfrm_state *, struct sk_buff *,
                                          const struct flowi *);
-       int                     (*hdr_offset)(struct xfrm_state *, struct sk_buff *, u8 **);
 };
 
 int xfrm_register_type(const struct xfrm_type *type, unsigned short family);
@@ -1605,8 +1604,6 @@ __be32 xfrm6_tunnel_alloc_spi(struct net *net, xfrm_address_t *saddr);
 __be32 xfrm6_tunnel_spi_lookup(struct net *net, const xfrm_address_t *saddr);
 int xfrm6_output(struct net *net, struct sock *sk, struct sk_buff *skb);
 int xfrm6_output_finish(struct sock *sk, struct sk_buff *skb);
-int xfrm6_find_1stfragopt(struct xfrm_state *x, struct sk_buff *skb,
-                         u8 **prevhdr);
 
 #ifdef CONFIG_XFRM
 void xfrm6_local_rxpmtu(struct sk_buff *skb, u32 mtu);
index e9705c2..828e625 100644 (file)
@@ -762,7 +762,6 @@ static const struct xfrm_type ah6_type = {
        .destructor     = ah6_destroy,
        .input          = ah6_input,
        .output         = ah6_output,
-       .hdr_offset     = xfrm6_find_1stfragopt,
 };
 
 static struct xfrm6_protocol ah6_protocol = {
index be2c0ac..37c4b17 100644 (file)
@@ -1250,7 +1250,6 @@ static const struct xfrm_type esp6_type = {
        .destructor     = esp6_destroy,
        .input          = esp6_input,
        .output         = esp6_output,
-       .hdr_offset     = xfrm6_find_1stfragopt,
 };
 
 static struct xfrm6_protocol esp6_protocol = {
index 491aba6..15f984b 100644 (file)
@@ -178,7 +178,6 @@ static const struct xfrm_type ipcomp6_type = {
        .destructor     = ipcomp_destroy,
        .input          = ipcomp_input,
        .output         = ipcomp_output,
-       .hdr_offset     = xfrm6_find_1stfragopt,
 };
 
 static struct xfrm6_protocol ipcomp6_protocol = {
index 8b84d53..57fa27c 100644 (file)
 #include <net/ip6_route.h>
 #include <net/xfrm.h>
 
-int xfrm6_find_1stfragopt(struct xfrm_state *x, struct sk_buff *skb,
-                         u8 **prevhdr)
-{
-       return ip6_find_1stfragopt(skb, prevhdr);
-}
-EXPORT_SYMBOL(xfrm6_find_1stfragopt);
-
 void xfrm6_local_rxpmtu(struct sk_buff *skb, u32 mtu)
 {
        struct flowi6 fl6;
index 1734339..10842d5 100644 (file)
@@ -185,7 +185,7 @@ static int xfrm6_hdr_offset(struct xfrm_state *x, struct sk_buff *skb, u8 **prev
                break;
        }
 
-       return x->type->hdr_offset(x, skb, prevhdr);
+       return ip6_find_1stfragopt(skb, prevhdr);
 }
 
 /* Add encapsulation header.