Herbert,

I really appreciate this work.
Thank you!

--yoshfuji

In article <[EMAIL PROTECTED]> (at Sun, 14 Oct 2007 22:49:05 +0800), Herbert Xu 
<[EMAIL PROTECTED]> says:

> [IPV6]: Replace sk_buff ** with sk_buff * in input handlers
> 
> 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 <[EMAIL PROTECTED]>
> ---
> 
>  include/net/ipv6.h     |    2 +-
>  include/net/protocol.h |    2 +-
>  include/net/xfrm.h     |    2 +-
>  net/dccp/ipv6.c        |    3 +--
>  net/ipv6/exthdrs.c     |   41 ++++++++++++++---------------------------
>  net/ipv6/icmp.c        |    5 ++---
>  net/ipv6/ip6_input.c   |    4 ++--
>  net/ipv6/reassembly.c  |    3 +--
>  net/ipv6/tcp_ipv6.c    |    3 +--
>  net/ipv6/tunnel6.c     |    6 ++----
>  net/ipv6/udp.c         |    7 +++----
>  net/ipv6/udp_impl.h    |    2 +-
>  net/ipv6/udplite.c     |    4 ++--
>  net/ipv6/xfrm6_input.c |    4 ++--
>  net/sctp/ipv6.c        |    4 ++--
>  15 files changed, 36 insertions(+), 56 deletions(-)
> 
> diff --git a/include/net/ipv6.h b/include/net/ipv6.h
> index 31b3f1b..abd8584 100644
> --- a/include/net/ipv6.h
> +++ b/include/net/ipv6.h
> @@ -240,7 +240,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,
> diff --git a/include/net/protocol.h b/include/net/protocol.h
> index 105bf12..1166ffb 100644
> --- a/include/net/protocol.h
> +++ b/include/net/protocol.h
> @@ -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,
> diff --git a/include/net/xfrm.h b/include/net/xfrm.h
> index 77be396..0e84484 100644
> --- a/include/net/xfrm.h
> +++ b/include/net/xfrm.h
> @@ -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);
> diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c
> index 006a383..cac5354 100644
> --- a/net/dccp/ipv6.c
> +++ b/net/dccp/ipv6.c
> @@ -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;
>  
> diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c
> index 0ff2bf1..1e89efd 100644
> --- a/net/ipv6/exthdrs.c
> +++ b/net/ipv6/exthdrs.c
> @@ -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);
> diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
> index 47b8ce2..9bb031f 100644
> --- a/net/ipv6/icmp.c
> +++ b/net/ipv6/icmp.c
> @@ -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;
> diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c
> index 9149fc2..af355df 100644
> --- a/net/ipv6/ip6_input.c
> +++ b/net/ipv6/ip6_input.c
> @@ -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)
> diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
> index fa1055b..79c3253 100644
> --- a/net/ipv6/reassembly.c
> +++ b/net/ipv6/reassembly.c
> @@ -730,9 +730,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);
> diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
> index a07b59c..737b755 100644
> --- a/net/ipv6/tcp_ipv6.c
> +++ b/net/ipv6/tcp_ipv6.c
> @@ -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;
> diff --git a/net/ipv6/tunnel6.c b/net/ipv6/tunnel6.c
> index 23e2809..6323921 100644
> --- a/net/ipv6/tunnel6.c
> +++ b/net/ipv6/tunnel6.c
> @@ -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)))
> diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
> index 82ff26d..caebad6 100644
> --- a/net/ipv6/udp.c
> +++ b/net/ipv6/udp.c
> @@ -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);
>  }
>  
>  /*
> diff --git a/net/ipv6/udp_impl.h b/net/ipv6/udp_impl.h
> index 6e252f3..2d3fda6 100644
> --- a/net/ipv6/udp_impl.h
> +++ b/net/ipv6/udp_impl.h
> @@ -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 []);
>  
> diff --git a/net/ipv6/udplite.c b/net/ipv6/udplite.c
> index f54016a..766566f 100644
> --- a/net/ipv6/udplite.c
> +++ b/net/ipv6/udplite.c
> @@ -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,
> diff --git a/net/ipv6/xfrm6_input.c b/net/ipv6/xfrm6_input.c
> index c858537..02f69e5 100644
> --- a/net/ipv6/xfrm6_input.c
> +++ b/net/ipv6/xfrm6_input.c
> @@ -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);
> diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
> index 9de3dda..eb4deaf 100644
> --- a/net/sctp/ipv6.c
> +++ b/net/sctp/ipv6.c
> @@ -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 = {
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to