diff options
| -rw-r--r-- | net/ipv6/ip6_input.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c index aceee252503d..df8f051c0fce 100644 --- a/net/ipv6/ip6_input.c +++ b/net/ipv6/ip6_input.c | |||
| @@ -84,14 +84,9 @@ int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt | |||
| 84 | */ | 84 | */ |
| 85 | IP6CB(skb)->iif = skb->dst ? ((struct rt6_info *)skb->dst)->rt6i_idev->dev->ifindex : dev->ifindex; | 85 | IP6CB(skb)->iif = skb->dst ? ((struct rt6_info *)skb->dst)->rt6i_idev->dev->ifindex : dev->ifindex; |
| 86 | 86 | ||
| 87 | if (skb->len < sizeof(struct ipv6hdr)) | 87 | if (unlikely(!pskb_may_pull(skb, sizeof(*hdr)))) |
| 88 | goto err; | 88 | goto err; |
| 89 | 89 | ||
| 90 | if (!pskb_may_pull(skb, sizeof(struct ipv6hdr))) { | ||
| 91 | IP6_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS); | ||
| 92 | goto drop; | ||
| 93 | } | ||
| 94 | |||
| 95 | hdr = skb->nh.ipv6h; | 90 | hdr = skb->nh.ipv6h; |
| 96 | 91 | ||
| 97 | if (hdr->version != 6) | 92 | if (hdr->version != 6) |
