From: Thierry Reding Date: Fri, 25 Oct 2013 09:31:31 +0000 (+0200) Subject: Merge remote-tracking branch 'ipsec-next/master' X-Git-Tag: next-20131025~65 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=e68a27dd2caed032e93964613ddbc0fe79508e6e;p=karo-tx-linux.git Merge remote-tracking branch 'ipsec-next/master' Conflicts: net/xfrm/xfrm_policy.c --- e68a27dd2caed032e93964613ddbc0fe79508e6e diff --cc net/xfrm/xfrm_policy.c index 76e1873811d4,e09edfcf1b79..9a91f7431c41 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c @@@ -1842,8 -1831,14 +1842,15 @@@ static int xdst_queue_output(struct sk_ unsigned long sched_next; struct dst_entry *dst = skb_dst(skb); struct xfrm_dst *xdst = (struct xfrm_dst *) dst; - struct xfrm_policy_queue *pq = &xdst->pols[0]->polq; + 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);