[IPV6]: Need to use pskb_trim_rcsum().
Fix pskb_trim usage in ipv6. Only the udp one is really a bug, other places are just doing equivalent code. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e50ef933e6
commit
42ca89c18b
3 changed files with 8 additions and 12 deletions
|
@ -459,11 +459,10 @@ static int ipv6_hop_jumbo(struct sk_buff *skb, int optoff)
|
|||
IP6_INC_STATS_BH(IPSTATS_MIB_INTRUNCATEDPKTS);
|
||||
goto drop;
|
||||
}
|
||||
if (pkt_len + sizeof(struct ipv6hdr) < skb->len) {
|
||||
__pskb_trim(skb, pkt_len + sizeof(struct ipv6hdr));
|
||||
if (skb->ip_summed == CHECKSUM_HW)
|
||||
skb->ip_summed = CHECKSUM_NONE;
|
||||
}
|
||||
|
||||
if (pskb_trim_rcsum(skb, pkt_len + sizeof(struct ipv6hdr)))
|
||||
goto drop;
|
||||
|
||||
return 1;
|
||||
|
||||
drop:
|
||||
|
|
|
@ -479,12 +479,9 @@ static void ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,
|
|||
/* Point into the IP datagram 'data' part. */
|
||||
if (!pskb_pull(skb, (u8 *) (fhdr + 1) - skb->data))
|
||||
goto err;
|
||||
if (end-offset < skb->len) {
|
||||
if (pskb_trim(skb, end - offset))
|
||||
goto err;
|
||||
if (skb->ip_summed != CHECKSUM_UNNECESSARY)
|
||||
skb->ip_summed = CHECKSUM_NONE;
|
||||
}
|
||||
|
||||
if (pskb_trim_rcsum(skb, end - offset))
|
||||
goto err;
|
||||
|
||||
/* Find out which fragments are in front and at the back of us
|
||||
* in the chain of fragments so far. We must know where to put
|
||||
|
|
|
@ -483,7 +483,7 @@ static int udpv6_rcv(struct sk_buff **pskb, unsigned int *nhoffp)
|
|||
}
|
||||
|
||||
if (ulen < skb->len) {
|
||||
if (__pskb_trim(skb, ulen))
|
||||
if (pskb_trim_rcsum(skb, ulen))
|
||||
goto discard;
|
||||
saddr = &skb->nh.ipv6h->saddr;
|
||||
daddr = &skb->nh.ipv6h->daddr;
|
||||
|
|
Loading…
Reference in a new issue