RDMA/ucma: Check that device exists prior to accessing it
[pandora-kernel.git] / net / ipv6 / af_inet6.c
index 8657823..7039068 100644 (file)
@@ -785,7 +785,6 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb, u32 features)
        const struct inet6_protocol *ops;
        int proto;
        struct frag_hdr *fptr;
-       unsigned int unfrag_ip6hlen;
        u8 *prevhdr;
        int offset = 0;
 
@@ -824,9 +823,13 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb, u32 features)
                ipv6h->payload_len = htons(skb->len - skb->mac_len -
                                           sizeof(*ipv6h));
                if (proto == IPPROTO_UDP) {
-                       unfrag_ip6hlen = ip6_find_1stfragopt(skb, &prevhdr);
+                       int err = ip6_find_1stfragopt(skb, &prevhdr);
+                       if (err < 0) {
+                               kfree_skb_list(segs);
+                               return ERR_PTR(err);
+                       }
                        fptr = (struct frag_hdr *)(skb_network_header(skb) +
-                               unfrag_ip6hlen);
+                               err);
                        fptr->frag_off = htons(offset);
                        if (skb->next != NULL)
                                fptr->frag_off |= htons(IP6_MF);