]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - net/xfrm/xfrm_policy.c
Merge tag 'v3.13' into for-3.15
[karo-tx-linux.git] / net / xfrm / xfrm_policy.c
index 767c74a91db32bb27f4c88b230a9d8a4bca0238a..0d49945d0b9eed2910d39a3485c3ad0c79166d87 100644 (file)
@@ -1844,6 +1844,13 @@ static int xdst_queue_output(struct sk_buff *skb)
        struct xfrm_dst *xdst = (struct xfrm_dst *) dst;
        struct xfrm_policy *pol = xdst->pols[0];
        struct xfrm_policy_queue *pq = &pol->polq;
+       const struct sk_buff *fclone = skb + 1;
+
+       if (unlikely(skb->fclone == SKB_FCLONE_ORIG &&
+                    fclone->fclone == SKB_FCLONE_CLONE)) {
+               kfree_skb(skb);
+               return 0;
+       }
 
        if (pq->hold_queue.qlen > XFRM_MAX_QUEUE_LEN) {
                kfree_skb(skb);