aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/ip6_output.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r--net/ipv6/ip6_output.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 57a326080757..b2c092c6b9dc 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -733,7 +733,8 @@ slow_path:
733 skb_put(frag, len + hlen + sizeof(struct frag_hdr)); 733 skb_put(frag, len + hlen + sizeof(struct frag_hdr));
734 skb_reset_network_header(frag); 734 skb_reset_network_header(frag);
735 fh = (struct frag_hdr *)(skb_network_header(frag) + hlen); 735 fh = (struct frag_hdr *)(skb_network_header(frag) + hlen);
736 frag->h.raw = frag->nh.raw + hlen + sizeof(struct frag_hdr); 736 frag->transport_header = (frag->network_header + hlen +
737 sizeof(struct frag_hdr));
737 738
738 /* 739 /*
739 * Charge the memory for the fragment to any owner 740 * Charge the memory for the fragment to any owner
@@ -761,7 +762,7 @@ slow_path:
761 /* 762 /*
762 * Copy a block of the IP datagram. 763 * Copy a block of the IP datagram.
763 */ 764 */
764 if (skb_copy_bits(skb, ptr, frag->h.raw, len)) 765 if (skb_copy_bits(skb, ptr, skb_transport_header(skb), len))
765 BUG(); 766 BUG();
766 left -= len; 767 left -= len;
767 768
@@ -976,7 +977,7 @@ static inline int ip6_ufo_append_data(struct sock *sk,
976 skb_reset_network_header(skb); 977 skb_reset_network_header(skb);
977 978
978 /* initialize protocol header pointer */ 979 /* initialize protocol header pointer */
979 skb->h.raw = skb->nh.raw + fragheaderlen; 980 skb->transport_header = skb->network_header + fragheaderlen;
980 981
981 skb->ip_summed = CHECKSUM_PARTIAL; 982 skb->ip_summed = CHECKSUM_PARTIAL;
982 skb->csum = 0; 983 skb->csum = 0;
@@ -1198,8 +1199,8 @@ alloc_new_skb:
1198 data = skb_put(skb, fraglen); 1199 data = skb_put(skb, fraglen);
1199 skb_set_network_header(skb, exthdrlen); 1200 skb_set_network_header(skb, exthdrlen);
1200 data += fragheaderlen; 1201 data += fragheaderlen;
1201 skb->h.raw = skb->nh.raw + fragheaderlen; 1202 skb->transport_header = (skb->network_header +
1202 1203 fragheaderlen);
1203 if (fraggap) { 1204 if (fraggap) {
1204 skb->csum = skb_copy_and_csum_bits( 1205 skb->csum = skb_copy_and_csum_bits(
1205 skb_prev, maxfraglen, 1206 skb_prev, maxfraglen,