[IPV6]: Replace sk_buff ** with sk_buff * in input handlers
authorHerbert Xu <herbert@gondor.apana.org.au>
Mon, 15 Oct 2007 19:50:28 +0000 (12:50 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 15 Oct 2007 19:50:28 +0000 (12:50 -0700)
With all the users of the double pointers removed from the IPv6 input path,
this patch converts all occurances of sk_buff ** to sk_buff * in IPv6 input
handlers.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 files changed:
include/net/ipv6.h
include/net/protocol.h
include/net/xfrm.h
net/dccp/ipv6.c
net/ipv6/exthdrs.c
net/ipv6/icmp.c
net/ipv6/ip6_input.c
net/ipv6/reassembly.c
net/ipv6/tcp_ipv6.c
net/ipv6/tunnel6.c
net/ipv6/udp.c
net/ipv6/udp_impl.h
net/ipv6/udplite.c
net/ipv6/xfrm6_input.c
net/sctp/ipv6.c

index a0f1042037f21deb76e51c033053cc0da188a2de..cc796cbc1b26e5c292d649b8a26b2364dc7e0eef 100644 (file)
@@ -249,7 +249,7 @@ extern int                  ip6_ra_control(struct sock *sk, int sel,
                                               void (*destructor)(struct sock *));
 
 
-extern int                     ipv6_parse_hopopts(struct sk_buff **skbp);
+extern int                     ipv6_parse_hopopts(struct sk_buff *skb);
 
 extern struct ipv6_txoptions *  ipv6_dup_options(struct sock *sk, struct ipv6_txoptions *opt);
 extern struct ipv6_txoptions * ipv6_renew_options(struct sock *sk, struct ipv6_txoptions *opt,
index 105bf12b0c79588c6e45bf55239dc1bd6a1c27e2..1166ffb4b3ec7a253c640b680bbbd412718b1d48 100644 (file)
@@ -45,7 +45,7 @@ struct net_protocol {
 #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
 struct inet6_protocol 
 {
-       int     (*handler)(struct sk_buff **skb);
+       int     (*handler)(struct sk_buff *skb);
 
        void    (*err_handler)(struct sk_buff *skb,
                               struct inet6_skb_parm *opt,
index 77be396ca633c93888767178915d1bd6f5e5a2ca..0e844845f3f4f5e12ee64daccaadea4c4879efa0 100644 (file)
@@ -1051,7 +1051,7 @@ extern int xfrm4_output(struct sk_buff *skb);
 extern int xfrm4_tunnel_register(struct xfrm_tunnel *handler, unsigned short family);
 extern int xfrm4_tunnel_deregister(struct xfrm_tunnel *handler, unsigned short family);
 extern int xfrm6_rcv_spi(struct sk_buff *skb, __be32 spi);
-extern int xfrm6_rcv(struct sk_buff **pskb);
+extern int xfrm6_rcv(struct sk_buff *skb);
 extern int xfrm6_input_addr(struct sk_buff *skb, xfrm_address_t *daddr,
                            xfrm_address_t *saddr, u8 proto);
 extern int xfrm6_tunnel_register(struct xfrm6_tunnel *handler, unsigned short family);
index 006a3834fbcdec78b0c437f3d9f60ccaa3e694d3..cac53548c2d89d90e69aebf05b0f4ba3a52d28f5 100644 (file)
@@ -767,10 +767,9 @@ discard:
        return 0;
 }
 
-static int dccp_v6_rcv(struct sk_buff **pskb)
+static int dccp_v6_rcv(struct sk_buff *skb)
 {
        const struct dccp_hdr *dh;
-       struct sk_buff *skb = *pskb;
        struct sock *sk;
        int min_cov;
 
index 0ff2bf12ecd1fdca3ec9dc4fc86e610d4c2bc135..1e89efd38a0c6094317495cce83e9add082e69f5 100644 (file)
@@ -102,7 +102,7 @@ EXPORT_SYMBOL_GPL(ipv6_find_tlv);
 
 struct tlvtype_proc {
        int     type;
-       int     (*func)(struct sk_buff **skbp, int offset);
+       int     (*func)(struct sk_buff *skb, int offset);
 };
 
 /*********************
@@ -111,10 +111,8 @@ struct tlvtype_proc {
 
 /* An unknown option is detected, decide what to do */
 
-static int ip6_tlvopt_unknown(struct sk_buff **skbp, int optoff)
+static int ip6_tlvopt_unknown(struct sk_buff *skb, int optoff)
 {
-       struct sk_buff *skb = *skbp;
-
        switch ((skb_network_header(skb)[optoff] & 0xC0) >> 6) {
        case 0: /* ignore */
                return 1;
@@ -139,9 +137,8 @@ static int ip6_tlvopt_unknown(struct sk_buff **skbp, int optoff)
 
 /* Parse tlv encoded option header (hop-by-hop or destination) */
 
-static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff **skbp)
+static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff *skb)
 {
-       struct sk_buff *skb = *skbp;
        struct tlvtype_proc *curr;
        const unsigned char *nh = skb_network_header(skb);
        int off = skb_network_header_len(skb);
@@ -172,13 +169,13 @@ static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff **skbp)
                                        /* type specific length/alignment
                                           checks will be performed in the
                                           func(). */
-                                       if (curr->func(skbp, off) == 0)
+                                       if (curr->func(skb, off) == 0)
                                                return 0;
                                        break;
                                }
                        }
                        if (curr->type < 0) {
-                               if (ip6_tlvopt_unknown(skbp, off) == 0)
+                               if (ip6_tlvopt_unknown(skb, off) == 0)
                                        return 0;
                        }
                        break;
@@ -198,9 +195,8 @@ bad:
  *****************************/
 
 #if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
-static int ipv6_dest_hao(struct sk_buff **skbp, int optoff)
+static int ipv6_dest_hao(struct sk_buff *skb, int optoff)
 {
-       struct sk_buff *skb = *skbp;
        struct ipv6_destopt_hao *hao;
        struct inet6_skb_parm *opt = IP6CB(skb);
        struct ipv6hdr *ipv6h = ipv6_hdr(skb);
@@ -271,9 +267,8 @@ static struct tlvtype_proc tlvprocdestopt_lst[] = {
        {-1,                    NULL}
 };
 
-static int ipv6_destopt_rcv(struct sk_buff **skbp)
+static int ipv6_destopt_rcv(struct sk_buff *skb)
 {
-       struct sk_buff *skb = *skbp;
        struct inet6_skb_parm *opt = IP6CB(skb);
 #if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
        __u16 dstbuf;
@@ -295,9 +290,8 @@ static int ipv6_destopt_rcv(struct sk_buff **skbp)
 #endif
 
        dst = dst_clone(skb->dst);
-       if (ip6_parse_tlv(tlvprocdestopt_lst, skbp)) {
+       if (ip6_parse_tlv(tlvprocdestopt_lst, skb)) {
                dst_release(dst);
-               skb = *skbp;
                skb->transport_header += (skb_transport_header(skb)[1] + 1) << 3;
                opt = IP6CB(skb);
 #if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
@@ -328,10 +322,8 @@ void __init ipv6_destopt_init(void)
   NONE header. No data in packet.
  ********************************/
 
-static int ipv6_nodata_rcv(struct sk_buff **skbp)
+static int ipv6_nodata_rcv(struct sk_buff *skb)
 {
-       struct sk_buff *skb = *skbp;
-
        kfree_skb(skb);
        return 0;
 }
@@ -351,9 +343,8 @@ void __init ipv6_nodata_init(void)
   Routing header.
  ********************************/
 
-static int ipv6_rthdr_rcv(struct sk_buff **skbp)
+static int ipv6_rthdr_rcv(struct sk_buff *skb)
 {
-       struct sk_buff *skb = *skbp;
        struct inet6_skb_parm *opt = IP6CB(skb);
        struct in6_addr *addr = NULL;
        struct in6_addr daddr;
@@ -565,9 +556,8 @@ static inline struct inet6_dev *ipv6_skb_idev(struct sk_buff *skb)
 
 /* Router Alert as of RFC 2711 */
 
-static int ipv6_hop_ra(struct sk_buff **skbp, int optoff)
+static int ipv6_hop_ra(struct sk_buff *skb, int optoff)
 {
-       struct sk_buff *skb = *skbp;
        const unsigned char *nh = skb_network_header(skb);
 
        if (nh[optoff + 1] == 2) {
@@ -582,9 +572,8 @@ static int ipv6_hop_ra(struct sk_buff **skbp, int optoff)
 
 /* Jumbo payload */
 
-static int ipv6_hop_jumbo(struct sk_buff **skbp, int optoff)
+static int ipv6_hop_jumbo(struct sk_buff *skb, int optoff)
 {
-       struct sk_buff *skb = *skbp;
        const unsigned char *nh = skb_network_header(skb);
        u32 pkt_len;
 
@@ -635,9 +624,8 @@ static struct tlvtype_proc tlvprochopopt_lst[] = {
        { -1, }
 };
 
-int ipv6_parse_hopopts(struct sk_buff **skbp)
+int ipv6_parse_hopopts(struct sk_buff *skb)
 {
-       struct sk_buff *skb = *skbp;
        struct inet6_skb_parm *opt = IP6CB(skb);
 
        /*
@@ -654,8 +642,7 @@ int ipv6_parse_hopopts(struct sk_buff **skbp)
        }
 
        opt->hop = sizeof(struct ipv6hdr);
-       if (ip6_parse_tlv(tlvprochopopt_lst, skbp)) {
-               skb = *skbp;
+       if (ip6_parse_tlv(tlvprochopopt_lst, skb)) {
                skb->transport_header += (skb_transport_header(skb)[1] + 1) << 3;
                opt = IP6CB(skb);
                opt->nhoff = sizeof(struct ipv6hdr);
index 47b8ce232e8439cd7a213c035d3c3f17c7131fac..9bb031fa1c2f538c827402e3ecc8f90774fd6a55 100644 (file)
@@ -82,7 +82,7 @@ EXPORT_SYMBOL(icmpv6msg_statistics);
 static DEFINE_PER_CPU(struct socket *, __icmpv6_socket) = NULL;
 #define icmpv6_socket  __get_cpu_var(__icmpv6_socket)
 
-static int icmpv6_rcv(struct sk_buff **pskb);
+static int icmpv6_rcv(struct sk_buff *skb);
 
 static struct inet6_protocol icmpv6_protocol = {
        .handler        =       icmpv6_rcv,
@@ -614,9 +614,8 @@ static void icmpv6_notify(struct sk_buff *skb, int type, int code, __be32 info)
  *     Handle icmp messages
  */
 
-static int icmpv6_rcv(struct sk_buff **pskb)
+static int icmpv6_rcv(struct sk_buff *skb)
 {
-       struct sk_buff *skb = *pskb;
        struct net_device *dev = skb->dev;
        struct inet6_dev *idev = __in6_dev_get(dev);
        struct in6_addr *saddr, *daddr;
index e7c85069a5db96fdf06b440443f20c698ceddf75..fac6f7f9dd73a7722831a0f4ed716e9f31c2d6e5 100644 (file)
@@ -125,7 +125,7 @@ int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt
        }
 
        if (hdr->nexthdr == NEXTHDR_HOP) {
-               if (ipv6_parse_hopopts(&skb) < 0) {
+               if (ipv6_parse_hopopts(skb) < 0) {
                        IP6_INC_STATS_BH(idev, IPSTATS_MIB_INHDRERRORS);
                        rcu_read_unlock();
                        return 0;
@@ -199,7 +199,7 @@ resubmit:
                    !xfrm6_policy_check(NULL, XFRM_POLICY_IN, skb))
                        goto discard;
 
-               ret = ipprot->handler(&skb);
+               ret = ipprot->handler(skb);
                if (ret > 0)
                        goto resubmit;
                else if (ret == 0)
index ed3c7b7912a84d7e99324032153ca0e3c6602299..6ad19cfc2025bca20618a81d7bb45495f7291ab1 100644 (file)
@@ -628,9 +628,8 @@ out_fail:
        return -1;
 }
 
-static int ipv6_frag_rcv(struct sk_buff **skbp)
+static int ipv6_frag_rcv(struct sk_buff *skb)
 {
-       struct sk_buff *skb = *skbp;
        struct frag_hdr *fhdr;
        struct frag_queue *fq;
        struct ipv6hdr *hdr = ipv6_hdr(skb);
index a07b59c528f331181a1c34a873d8e754e4e9c1d1..737b755342bd8ca5b892fdac71346600e3462296 100644 (file)
@@ -1668,9 +1668,8 @@ ipv6_pktoptions:
        return 0;
 }
 
-static int tcp_v6_rcv(struct sk_buff **pskb)
+static int tcp_v6_rcv(struct sk_buff *skb)
 {
-       struct sk_buff *skb = *pskb;
        struct tcphdr *th;
        struct sock *sk;
        int ret;
index 23e2809878ae87a82e527415b399d80b493103d8..6323921b40bec37bb474fefadc1d66f3586738d9 100644 (file)
@@ -87,9 +87,8 @@ int xfrm6_tunnel_deregister(struct xfrm6_tunnel *handler, unsigned short family)
 
 EXPORT_SYMBOL(xfrm6_tunnel_deregister);
 
-static int tunnel6_rcv(struct sk_buff **pskb)
+static int tunnel6_rcv(struct sk_buff *skb)
 {
-       struct sk_buff *skb = *pskb;
        struct xfrm6_tunnel *handler;
 
        if (!pskb_may_pull(skb, sizeof(struct ipv6hdr)))
@@ -106,9 +105,8 @@ drop:
        return 0;
 }
 
-static int tunnel46_rcv(struct sk_buff **pskb)
+static int tunnel46_rcv(struct sk_buff *skb)
 {
-       struct sk_buff *skb = *pskb;
        struct xfrm6_tunnel *handler;
 
        if (!pskb_may_pull(skb, sizeof(struct ipv6hdr)))
index 82ff26dd4470e894c46099f8db7f84eb8e9301d7..caebad6ee510d8927db4b0df4dd0d8c2dfb5ab42 100644 (file)
@@ -405,10 +405,9 @@ static inline int udp6_csum_init(struct sk_buff *skb, struct udphdr *uh,
        return 0;
 }
 
-int __udp6_lib_rcv(struct sk_buff **pskb, struct hlist_head udptable[],
+int __udp6_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[],
                   int proto)
 {
-       struct sk_buff *skb = *pskb;
        struct sock *sk;
        struct udphdr *uh;
        struct net_device *dev = skb->dev;
@@ -494,9 +493,9 @@ discard:
        return 0;
 }
 
-static __inline__ int udpv6_rcv(struct sk_buff **pskb)
+static __inline__ int udpv6_rcv(struct sk_buff *skb)
 {
-       return __udp6_lib_rcv(pskb, udp_hash, IPPROTO_UDP);
+       return __udp6_lib_rcv(skb, udp_hash, IPPROTO_UDP);
 }
 
 /*
index 6e252f318f7c91c81f5cdf04d2822b476f26a8ae..2d3fda6012326e81dcc1acf3fe43414b5986580e 100644 (file)
@@ -6,7 +6,7 @@
 #include <net/addrconf.h>
 #include <net/inet_common.h>
 
-extern int     __udp6_lib_rcv(struct sk_buff **, struct hlist_head [], int );
+extern int     __udp6_lib_rcv(struct sk_buff *, struct hlist_head [], int );
 extern void    __udp6_lib_err(struct sk_buff *, struct inet6_skb_parm *,
                               int , int , int , __be32 , struct hlist_head []);
 
index f54016a55004d2d931471c06f14db922efa5f84d..766566f7de47dc6734db6f2fb769b012723c0947 100644 (file)
@@ -17,9 +17,9 @@
 
 DEFINE_SNMP_STAT(struct udp_mib, udplite_stats_in6) __read_mostly;
 
-static int udplitev6_rcv(struct sk_buff **pskb)
+static int udplitev6_rcv(struct sk_buff *skb)
 {
-       return __udp6_lib_rcv(pskb, udplite_hash, IPPROTO_UDPLITE);
+       return __udp6_lib_rcv(skb, udplite_hash, IPPROTO_UDPLITE);
 }
 
 static void udplitev6_err(struct sk_buff *skb,
index c858537cec4b0b756ba03907b1ffa7dbcc787793..02f69e544f6f51c85f04266e3a2f1dfbcf19ddfc 100644 (file)
@@ -133,9 +133,9 @@ drop:
 
 EXPORT_SYMBOL(xfrm6_rcv_spi);
 
-int xfrm6_rcv(struct sk_buff **pskb)
+int xfrm6_rcv(struct sk_buff *skb)
 {
-       return xfrm6_rcv_spi(*pskb, 0);
+       return xfrm6_rcv_spi(skb, 0);
 }
 
 EXPORT_SYMBOL(xfrm6_rcv);
index 9de3ddaa27685daf19d9795727c8d81d67fdc00c..eb4deaf589148dbf7a8797449f34439779da4a63 100644 (file)
@@ -954,9 +954,9 @@ static struct inet_protosw sctpv6_stream_protosw = {
        .flags         = SCTP_PROTOSW_FLAG,
 };
 
-static int sctp6_rcv(struct sk_buff **pskb)
+static int sctp6_rcv(struct sk_buff *skb)
 {
-       return sctp_rcv(*pskb) ? -1 : 0;
+       return sctp_rcv(skb) ? -1 : 0;
 }
 
 static struct inet6_protocol sctpv6_protocol = {