From: David S. Miller Date: Sat, 2 Nov 2013 06:13:48 +0000 (-0400) Subject: Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec... X-Git-Tag: v3.13-rc1~105^2~77 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=296c10639a33941d0090afa17b7535fcbf81d97a;p=linux-2.6-block.git Merge branch 'master' of git://git./linux/kernel/git/klassert/ipsec-next Conflicts: net/xfrm/xfrm_policy.c Minor merge conflict in xfrm_policy.c, consisting of overlapping changes which were trivial to resolve. Signed-off-by: David S. Miller --- 296c10639a33941d0090afa17b7535fcbf81d97a 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);