Skip to content

Commit

Permalink
[IPV6]: Replace sk_buff ** with sk_buff * in input handlers
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Herbert Xu authored and David S. Miller committed Oct 15, 2007
1 parent a224be7 commit e5bbef2
Show file tree
Hide file tree
Showing 15 changed files with 36 additions and 56 deletions.
2 changes: 1 addition & 1 deletion include/net/ipv6.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion include/net/protocol.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion include/net/xfrm.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
3 changes: 1 addition & 2 deletions net/dccp/ipv6.c
Original file line number Diff line number Diff line change
Expand Up @@ -767,10 +767,9 @@ static int dccp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
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;

Expand Down
41 changes: 14 additions & 27 deletions net/ipv6/exthdrs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
};

/*********************
Expand All @@ -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;
Expand All @@ -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);
Expand Down Expand Up @@ -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;
Expand All @@ -198,9 +195,8 @@ static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff **skbp)
*****************************/

#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);
Expand Down Expand Up @@ -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;
Expand All @@ -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)
Expand Down Expand Up @@ -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;
}
Expand All @@ -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;
Expand Down Expand Up @@ -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) {
Expand All @@ -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;

Expand Down Expand Up @@ -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);

/*
Expand All @@ -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);
Expand Down
5 changes: 2 additions & 3 deletions net/ipv6/icmp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions net/ipv6/ip6_input.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -199,7 +199,7 @@ static int ip6_input_finish(struct sk_buff *skb)
!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)
Expand Down
3 changes: 1 addition & 2 deletions net/ipv6/reassembly.c
Original file line number Diff line number Diff line change
Expand Up @@ -628,9 +628,8 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *prev,
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);
Expand Down
3 changes: 1 addition & 2 deletions net/ipv6/tcp_ipv6.c
Original file line number Diff line number Diff line change
Expand Up @@ -1668,9 +1668,8 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
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;
Expand Down
6 changes: 2 additions & 4 deletions net/ipv6/tunnel6.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)))
Expand All @@ -106,9 +105,8 @@ static int tunnel6_rcv(struct sk_buff **pskb)
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)))
Expand Down
7 changes: 3 additions & 4 deletions net/ipv6/udp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -494,9 +493,9 @@ int __udp6_lib_rcv(struct sk_buff **pskb, struct hlist_head udptable[],
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);
}

/*
Expand Down
2 changes: 1 addition & 1 deletion net/ipv6/udp_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 []);

Expand Down
4 changes: 2 additions & 2 deletions net/ipv6/udplite.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
4 changes: 2 additions & 2 deletions net/ipv6/xfrm6_input.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,9 @@ int xfrm6_rcv_spi(struct sk_buff *skb, __be32 spi)

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);
Expand Down
4 changes: 2 additions & 2 deletions net/sctp/ipv6.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down

0 comments on commit e5bbef2

Please sign in to comment.