diff options
Diffstat (limited to 'net/ipv6/reassembly.c')
-rw-r--r-- | net/ipv6/reassembly.c | 8 |
1 files changed, 5 insertions, 3 deletions
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, | |||
679 | /* Yes, and fold redundant checksum back. 8) */ | 679 | /* Yes, and fold redundant checksum back. 8) */ |
680 | if (head->ip_summed == CHECKSUM_COMPLETE) | 680 | if (head->ip_summed == CHECKSUM_COMPLETE) |
681 | head->csum = csum_partial(skb_network_header(head), | 681 | head->csum = csum_partial(skb_network_header(head), |
682 | head->h.raw - head->nh.raw, | 682 | skb_network_header_len(head), |
683 | head->csum); | 683 | head->csum); |
684 | 684 | ||
685 | rcu_read_lock(); | 685 | rcu_read_lock(); |
@@ -715,13 +715,15 @@ static int ipv6_frag_rcv(struct sk_buff **skbp) | |||
715 | /* Jumbo payload inhibits frag. header */ | 715 | /* Jumbo payload inhibits frag. header */ |
716 | if (hdr->payload_len==0) { | 716 | if (hdr->payload_len==0) { |
717 | IP6_INC_STATS(ip6_dst_idev(skb->dst), IPSTATS_MIB_INHDRERRORS); | 717 | IP6_INC_STATS(ip6_dst_idev(skb->dst), IPSTATS_MIB_INHDRERRORS); |
718 | icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, skb->h.raw-skb->nh.raw); | 718 | icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, |
719 | skb_network_header_len(skb)); | ||
719 | return -1; | 720 | return -1; |
720 | } | 721 | } |
721 | if (!pskb_may_pull(skb, (skb_transport_offset(skb) + | 722 | if (!pskb_may_pull(skb, (skb_transport_offset(skb) + |
722 | sizeof(struct frag_hdr)))) { | 723 | sizeof(struct frag_hdr)))) { |
723 | IP6_INC_STATS(ip6_dst_idev(skb->dst), IPSTATS_MIB_INHDRERRORS); | 724 | IP6_INC_STATS(ip6_dst_idev(skb->dst), IPSTATS_MIB_INHDRERRORS); |
724 | icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, skb->h.raw-skb->nh.raw); | 725 | icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, |
726 | skb_network_header_len(skb)); | ||
725 | return -1; | 727 | return -1; |
726 | } | 728 | } |
727 | 729 | ||