diff options
author | David S. Miller <davem@davemloft.net> | 2013-11-02 02:13:48 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-11-02 02:13:48 -0400 |
commit | 296c10639a33941d0090afa17b7535fcbf81d97a (patch) | |
tree | f85819ef71b07bcf004c7971fa66c9f68a45bd74 /net/xfrm | |
parent | e139862eeec985d7139b11b09deeb9a32e3f3af2 (diff) | |
parent | 1c5ad13f7c2b2afe30e43858d04fff979dc9d243 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/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 <davem@davemloft.net>
Diffstat (limited to 'net/xfrm')
-rw-r--r-- | net/xfrm/xfrm_ipcomp.c | 6 | ||||
-rw-r--r-- | net/xfrm/xfrm_policy.c | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/net/xfrm/xfrm_ipcomp.c b/net/xfrm/xfrm_ipcomp.c index 2906d520eea7..b943c7fc5ed2 100644 --- a/net/xfrm/xfrm_ipcomp.c +++ b/net/xfrm/xfrm_ipcomp.c | |||
@@ -220,8 +220,8 @@ static void ipcomp_free_scratches(void) | |||
220 | 220 | ||
221 | static void * __percpu *ipcomp_alloc_scratches(void) | 221 | static void * __percpu *ipcomp_alloc_scratches(void) |
222 | { | 222 | { |
223 | int i; | ||
224 | void * __percpu *scratches; | 223 | void * __percpu *scratches; |
224 | int i; | ||
225 | 225 | ||
226 | if (ipcomp_scratch_users++) | 226 | if (ipcomp_scratch_users++) |
227 | return ipcomp_scratches; | 227 | return ipcomp_scratches; |
@@ -233,7 +233,9 @@ static void * __percpu *ipcomp_alloc_scratches(void) | |||
233 | ipcomp_scratches = scratches; | 233 | ipcomp_scratches = scratches; |
234 | 234 | ||
235 | for_each_possible_cpu(i) { | 235 | for_each_possible_cpu(i) { |
236 | void *scratch = vmalloc(IPCOMP_SCRATCH_SIZE); | 236 | void *scratch; |
237 | |||
238 | scratch = vmalloc_node(IPCOMP_SCRATCH_SIZE, cpu_to_node(i)); | ||
237 | if (!scratch) | 239 | if (!scratch) |
238 | return NULL; | 240 | return NULL; |
239 | *per_cpu_ptr(scratches, i) = scratch; | 241 | *per_cpu_ptr(scratches, i) = scratch; |
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 76e1873811d4..9a91f7431c41 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c | |||
@@ -1844,6 +1844,13 @@ static int xdst_queue_output(struct sk_buff *skb) | |||
1844 | struct xfrm_dst *xdst = (struct xfrm_dst *) dst; | 1844 | struct xfrm_dst *xdst = (struct xfrm_dst *) dst; |
1845 | struct xfrm_policy *pol = xdst->pols[0]; | 1845 | struct xfrm_policy *pol = xdst->pols[0]; |
1846 | struct xfrm_policy_queue *pq = &pol->polq; | 1846 | struct xfrm_policy_queue *pq = &pol->polq; |
1847 | const struct sk_buff *fclone = skb + 1; | ||
1848 | |||
1849 | if (unlikely(skb->fclone == SKB_FCLONE_ORIG && | ||
1850 | fclone->fclone == SKB_FCLONE_CLONE)) { | ||
1851 | kfree_skb(skb); | ||
1852 | return 0; | ||
1853 | } | ||
1847 | 1854 | ||
1848 | if (pq->hold_queue.qlen > XFRM_MAX_QUEUE_LEN) { | 1855 | if (pq->hold_queue.qlen > XFRM_MAX_QUEUE_LEN) { |
1849 | kfree_skb(skb); | 1856 | kfree_skb(skb); |