diff options
Diffstat (limited to 'net/ipv6/reassembly.c')
| -rw-r--r-- | net/ipv6/reassembly.c | 22 | 
1 files changed, 11 insertions, 11 deletions
diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c index e9ac7a12f59..54a387d31e1 100644 --- a/net/ipv6/reassembly.c +++ b/net/ipv6/reassembly.c @@ -267,7 +267,7 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,  	struct sk_buff *prev, *next;  	struct net_device *dev;  	int offset, end; -	struct net *net = dev_net(skb->dst->dev); +	struct net *net = dev_net(skb_dst(skb)->dev);  	if (fq->q.last_in & INET_FRAG_COMPLETE)  		goto err; @@ -277,7 +277,7 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,  			((u8 *)(fhdr + 1) - (u8 *)(ipv6_hdr(skb) + 1)));  	if ((unsigned int)end > IPV6_MAXPLEN) { -		IP6_INC_STATS_BH(net, ip6_dst_idev(skb->dst), +		IP6_INC_STATS_BH(net, ip6_dst_idev(skb_dst(skb)),  				 IPSTATS_MIB_INHDRERRORS);  		icmpv6_param_prob(skb, ICMPV6_HDR_FIELD,  				  ((u8 *)&fhdr->frag_off - @@ -310,7 +310,7 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,  			/* RFC2460 says always send parameter problem in  			 * this case. -DaveM  			 */ -			IP6_INC_STATS_BH(net, ip6_dst_idev(skb->dst), +			IP6_INC_STATS_BH(net, ip6_dst_idev(skb_dst(skb)),  					 IPSTATS_MIB_INHDRERRORS);  			icmpv6_param_prob(skb, ICMPV6_HDR_FIELD,  					  offsetof(struct ipv6hdr, payload_len)); @@ -434,7 +434,7 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,  	return -1;  err: -	IP6_INC_STATS(net, ip6_dst_idev(skb->dst), +	IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),  		      IPSTATS_MIB_REASMFAILS);  	kfree_skb(skb);  	return -1; @@ -576,9 +576,9 @@ static int ipv6_frag_rcv(struct sk_buff *skb)  	struct frag_hdr *fhdr;  	struct frag_queue *fq;  	struct ipv6hdr *hdr = ipv6_hdr(skb); -	struct net *net = dev_net(skb->dst->dev); +	struct net *net = dev_net(skb_dst(skb)->dev); -	IP6_INC_STATS_BH(net, ip6_dst_idev(skb->dst), IPSTATS_MIB_REASMREQDS); +	IP6_INC_STATS_BH(net, ip6_dst_idev(skb_dst(skb)), IPSTATS_MIB_REASMREQDS);  	/* Jumbo payload inhibits frag. header */  	if (hdr->payload_len==0) @@ -595,17 +595,17 @@ static int ipv6_frag_rcv(struct sk_buff *skb)  		/* It is not a fragmented frame */  		skb->transport_header += sizeof(struct frag_hdr);  		IP6_INC_STATS_BH(net, -				 ip6_dst_idev(skb->dst), IPSTATS_MIB_REASMOKS); +				 ip6_dst_idev(skb_dst(skb)), IPSTATS_MIB_REASMOKS);  		IP6CB(skb)->nhoff = (u8 *)fhdr - skb_network_header(skb);  		return 1;  	}  	if (atomic_read(&net->ipv6.frags.mem) > net->ipv6.frags.high_thresh) -		ip6_evictor(net, ip6_dst_idev(skb->dst)); +		ip6_evictor(net, ip6_dst_idev(skb_dst(skb)));  	if ((fq = fq_find(net, fhdr->identification, &hdr->saddr, &hdr->daddr, -			  ip6_dst_idev(skb->dst))) != NULL) { +			  ip6_dst_idev(skb_dst(skb)))) != NULL) {  		int ret;  		spin_lock(&fq->q.lock); @@ -617,12 +617,12 @@ static int ipv6_frag_rcv(struct sk_buff *skb)  		return ret;  	} -	IP6_INC_STATS_BH(net, ip6_dst_idev(skb->dst), IPSTATS_MIB_REASMFAILS); +	IP6_INC_STATS_BH(net, ip6_dst_idev(skb_dst(skb)), IPSTATS_MIB_REASMFAILS);  	kfree_skb(skb);  	return -1;  fail_hdr: -	IP6_INC_STATS(net, ip6_dst_idev(skb->dst), IPSTATS_MIB_INHDRERRORS); +	IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)), IPSTATS_MIB_INHDRERRORS);  	icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, skb_network_header_len(skb));  	return -1;  }  |