diff options
| -rw-r--r-- | drivers/net/gianfar.c | 2 | ||||
| -rw-r--r-- | drivers/net/pasemi_mac.c | 4 | ||||
| -rw-r--r-- | include/linux/skbuff.h | 5 | ||||
| -rw-r--r-- | net/core/skbuff.c | 2 | ||||
| -rw-r--r-- | net/ipv4/ip_output.c | 2 | ||||
| -rw-r--r-- | net/ipv6/esp6.c | 3 | ||||
| -rw-r--r-- | net/ipv6/exthdrs.c | 8 | ||||
| -rw-r--r-- | net/ipv6/ip6_input.c | 2 | ||||
| -rw-r--r-- | net/ipv6/ip6_output.c | 4 | ||||
| -rw-r--r-- | net/ipv6/mcast.c | 2 | ||||
| -rw-r--r-- | net/ipv6/netfilter/nf_conntrack_reasm.c | 2 | ||||
| -rw-r--r-- | net/ipv6/raw.c | 2 | ||||
| -rw-r--r-- | net/ipv6/reassembly.c | 8 | ||||
| -rw-r--r-- | net/ipv6/xfrm6_policy.c | 2 | 
14 files changed, 27 insertions, 21 deletions
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index b9f44602c5e1..b666a0cc0642 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c @@ -953,7 +953,7 @@ static inline void gfar_tx_checksum(struct sk_buff *skb, struct txfcb *fcb)  	 * l4os is the distance between the start of the  	 * l3 hdr and the l4 hdr */  	fcb->l3os = (u16)(skb_network_offset(skb) - GMAC_FCB_LEN); -	fcb->l4os = (u16)(skb->h.raw - skb->nh.raw); +	fcb->l4os = skb_network_header_len(skb);  	fcb->flags = flags;  } diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c index 1d8129986cc5..76fe9dd8e841 100644 --- a/drivers/net/pasemi_mac.c +++ b/drivers/net/pasemi_mac.c @@ -734,12 +734,12 @@ static int pasemi_mac_start_tx(struct sk_buff *skb, struct net_device *dev)  		switch (ip_hdr(skb)->protocol) {  		case IPPROTO_TCP:  			dflags |= XCT_MACTX_CSUM_TCP; -			dflags |= XCT_MACTX_IPH((skb->h.raw - skb->nh.raw) >> 2); +			dflags |= XCT_MACTX_IPH(skb_network_header_len(skb) >> 2);  			dflags |= XCT_MACTX_IPO(nh - skb->data);  			break;  		case IPPROTO_UDP:  			dflags |= XCT_MACTX_CSUM_UDP; -			dflags |= XCT_MACTX_IPH((skb->h.raw - skb->nh.raw) >> 2); +			dflags |= XCT_MACTX_IPH(skb_network_header_len(skb) >> 2);  			dflags |= XCT_MACTX_IPO(nh - skb->data);  			break;  		} diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 47c57be97d43..230dd43fc9b3 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -992,6 +992,11 @@ static inline int skb_network_offset(const struct sk_buff *skb)  	return skb->nh.raw - skb->data;  } +static inline u32 skb_network_header_len(const struct sk_buff *skb) +{ +	return skb->h.raw - skb->nh.raw; +} +  static inline unsigned char *skb_mac_header(const struct sk_buff *skb)  {  	return skb->mac.raw; diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 87e000633f41..f38af6c01b12 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -1906,7 +1906,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)  		skb_reserve(nskb, headroom);  		skb_reset_mac_header(nskb);  		skb_set_network_header(nskb, skb->mac_len); -		nskb->h.raw = nskb->nh.raw + (skb->h.raw - skb->nh.raw); +		nskb->h.raw = nskb->nh.raw + skb_network_header_len(skb);  		memcpy(skb_put(nskb, doffset), skb->data, doffset);  		if (!sg) { diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 11a6ac756f8c..02988fb262d6 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c @@ -1187,7 +1187,7 @@ int ip_push_pending_frames(struct sock *sk)  	if (skb->data < skb_network_header(skb))  		__skb_pull(skb, skb_network_offset(skb));  	while ((tmp_skb = __skb_dequeue(&sk->sk_write_queue)) != NULL) { -		__skb_pull(tmp_skb, skb->h.raw - skb->nh.raw); +		__skb_pull(tmp_skb, skb_network_header_len(skb));  		*tail_skb = tmp_skb;  		tail_skb = &(tmp_skb->next);  		skb->len += tmp_skb->len; diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c index 436eb9e6a6cf..7fdf84dee73f 100644 --- a/net/ipv6/esp6.c +++ b/net/ipv6/esp6.c @@ -147,8 +147,7 @@ static int esp6_input(struct xfrm_state *x, struct sk_buff *skb)  	int blksize = ALIGN(crypto_blkcipher_blocksize(tfm), 4);  	int alen = esp->auth.icv_trunc_len;  	int elen = skb->len - sizeof(struct ipv6_esp_hdr) - esp->conf.ivlen - alen; - -	int hdr_len = skb->h.raw - skb->nh.raw; +	int hdr_len = skb_network_header_len(skb);  	int nfrags;  	int ret = 0; diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c index f763409ea740..f34cc2bd489a 100644 --- a/net/ipv6/exthdrs.c +++ b/net/ipv6/exthdrs.c @@ -143,7 +143,7 @@ static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff **skbp)  	struct sk_buff *skb = *skbp;  	struct tlvtype_proc *curr;  	const unsigned char *nh = skb_network_header(skb); -	int off = skb->h.raw - skb->nh.raw; +	int off = skb_network_header_len(skb);  	int len = (skb_transport_header(skb)[1] + 1) << 3;  	if (skb_transport_offset(skb) + len > skb_headlen(skb)) @@ -297,7 +297,7 @@ static int ipv6_destopt_rcv(struct sk_buff **skbp)  		return -1;  	} -	opt->lastopt = opt->dst1 = skb->h.raw - skb->nh.raw; +	opt->lastopt = opt->dst1 = skb_network_header_len(skb);  #ifdef CONFIG_IPV6_MIP6  	dstbuf = opt->dst1;  #endif @@ -443,7 +443,7 @@ looped_back:  			break;  		} -		opt->lastopt = opt->srcrt = skb->h.raw - skb->nh.raw; +		opt->lastopt = opt->srcrt = skb_network_header_len(skb);  		skb->h.raw += (hdr->hdrlen + 1) << 3;  		opt->dst0 = opt->dst1;  		opt->dst1 = 0; @@ -738,7 +738,7 @@ int ipv6_parse_hopopts(struct sk_buff **skbp)  	/*  	 * skb_network_header(skb) is equal to skb->data, and -	 * skb->h.raw - skb->nh.raw is always equal to +	 * skb_network_header_len(skb) is always equal to  	 * sizeof(struct ipv6hdr) by definition of  	 * hop-by-hop options.  	 */ diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c index 44275411d1a8..cf0c4406b59e 100644 --- a/net/ipv6/ip6_input.c +++ b/net/ipv6/ip6_input.c @@ -182,7 +182,7 @@ resubmit:  			nf_reset(skb);  			skb_postpull_rcsum(skb, skb_network_header(skb), -					   skb->h.raw - skb->nh.raw); +					   skb_network_header_len(skb));  			hdr = ipv6_hdr(skb);  			if (ipv6_addr_is_multicast(&hdr->daddr) &&  			    !ipv6_chk_mcast_addr(skb->dev, &hdr->daddr, diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 32e8c3f73c79..57a326080757 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -1325,7 +1325,7 @@ int ip6_push_pending_frames(struct sock *sk)  	if (skb->data < skb_network_header(skb))  		__skb_pull(skb, skb_network_offset(skb));  	while ((tmp_skb = __skb_dequeue(&sk->sk_write_queue)) != NULL) { -		__skb_pull(tmp_skb, skb->h.raw - skb->nh.raw); +		__skb_pull(tmp_skb, skb_network_header_len(skb));  		*tail_skb = tmp_skb;  		tail_skb = &(tmp_skb->next);  		skb->len += tmp_skb->len; @@ -1337,7 +1337,7 @@ int ip6_push_pending_frames(struct sock *sk)  	}  	ipv6_addr_copy(final_dst, &fl->fl6_dst); -	__skb_pull(skb, skb->h.raw - skb->nh.raw); +	__skb_pull(skb, skb_network_header_len(skb));  	if (opt && opt->opt_flen)  		ipv6_push_frag_opts(skb, opt, &proto);  	if (opt && opt->opt_nflen) diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index 07e86ebb46b8..4c45bcce75e8 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c @@ -1168,7 +1168,7 @@ int igmp6_event_query(struct sk_buff *skb)  	/* compute payload length excluding extension headers */  	len = ntohs(ipv6_hdr(skb)->payload_len) + sizeof(struct ipv6hdr); -	len -= skb->h.raw - skb->nh.raw; +	len -= skb_network_header_len(skb);  	/* Drop queries with not link local source */  	if (!(ipv6_addr_type(&ipv6_hdr(skb)->saddr) & IPV6_ADDR_LINKLOCAL)) diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c index 84ce5b3c4b21..490e7e151f2d 100644 --- a/net/ipv6/netfilter/nf_conntrack_reasm.c +++ b/net/ipv6/netfilter/nf_conntrack_reasm.c @@ -657,7 +657,7 @@ nf_ct_frag6_reasm(struct nf_ct_frag6_queue *fq, struct net_device *dev)  	/* Yes, and fold redundant checksum back. 8) */  	if (head->ip_summed == CHECKSUM_COMPLETE)  		head->csum = csum_partial(skb_network_header(head), -					  head->h.raw - head->nh.raw, +					  skb_network_header_len(head),  					  head->csum);  	fq->fragments = NULL; diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index 116257d59a36..f925ca7c1a50 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -362,7 +362,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb)  	if (skb->ip_summed == CHECKSUM_COMPLETE) {  		skb_postpull_rcsum(skb, skb_network_header(skb), -				   skb->h.raw - skb->nh.raw); +				   skb_network_header_len(skb));  		if (!csum_ipv6_magic(&ipv6_hdr(skb)->saddr,  				     &ipv6_hdr(skb)->daddr,  				     skb->len, inet->num, skb->csum)) diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c index 31d4271ea540..6dfacfa7a599 100644 --- a/net/ipv6/reassembly.c +++ b/net/ipv6/reassembly.c @@ -679,7 +679,7 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff **skb_in,  	/* Yes, and fold redundant checksum back. 8) */  	if (head->ip_summed == CHECKSUM_COMPLETE)  		head->csum = csum_partial(skb_network_header(head), -					  head->h.raw - head->nh.raw, +					  skb_network_header_len(head),  					  head->csum);  	rcu_read_lock(); @@ -715,13 +715,15 @@ static int ipv6_frag_rcv(struct sk_buff **skbp)  	/* Jumbo payload inhibits frag. header */  	if (hdr->payload_len==0) {  		IP6_INC_STATS(ip6_dst_idev(skb->dst), IPSTATS_MIB_INHDRERRORS); -		icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, skb->h.raw-skb->nh.raw); +		icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, +				  skb_network_header_len(skb));  		return -1;  	}  	if (!pskb_may_pull(skb, (skb_transport_offset(skb) +  				 sizeof(struct frag_hdr)))) {  		IP6_INC_STATS(ip6_dst_idev(skb->dst), IPSTATS_MIB_INHDRERRORS); -		icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, skb->h.raw-skb->nh.raw); +		icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, +				  skb_network_header_len(skb));  		return -1;  	} diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c index b93bfb87f494..ef746d4f3131 100644 --- a/net/ipv6/xfrm6_policy.c +++ b/net/ipv6/xfrm6_policy.c @@ -270,7 +270,7 @@ error:  static inline void  _decode_session6(struct sk_buff *skb, struct flowi *fl)  { -	u16 offset = skb->h.raw - skb->nh.raw; +	u16 offset = skb_network_header_len(skb);  	struct ipv6hdr *hdr = ipv6_hdr(skb);  	struct ipv6_opt_hdr *exthdr;  	const unsigned char *nh = skb_network_header(skb);  | 
