aboutsummaryrefslogtreecommitdiffstats
path: root/net/xfrm
diff options
context:
space:
mode:
Diffstat (limited to 'net/xfrm')
-rw-r--r--net/xfrm/xfrm_policy.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index ed38d5d81f9e..e09edfcf1b79 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -1832,6 +1832,13 @@ static int xdst_queue_output(struct sk_buff *skb)
1832 struct dst_entry *dst = skb_dst(skb); 1832 struct dst_entry *dst = skb_dst(skb);
1833 struct xfrm_dst *xdst = (struct xfrm_dst *) dst; 1833 struct xfrm_dst *xdst = (struct xfrm_dst *) dst;
1834 struct xfrm_policy_queue *pq = &xdst->pols[0]->polq; 1834 struct xfrm_policy_queue *pq = &xdst->pols[0]->polq;
1835 const struct sk_buff *fclone = skb + 1;
1836
1837 if (unlikely(skb->fclone == SKB_FCLONE_ORIG &&
1838 fclone->fclone == SKB_FCLONE_CLONE)) {
1839 kfree_skb(skb);
1840 return 0;
1841 }
1835 1842
1836 if (pq->hold_queue.qlen > XFRM_MAX_QUEUE_LEN) { 1843 if (pq->hold_queue.qlen > XFRM_MAX_QUEUE_LEN) {
1837 kfree_skb(skb); 1844 kfree_skb(skb);