aboutsummaryrefslogtreecommitdiffstats
path: root/net/xfrm/xfrm_policy.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/xfrm/xfrm_policy.c')
-rw-r--r--net/xfrm/xfrm_policy.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index cf2bf3aa7ab4..3eccefae2c8a 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -228,13 +228,14 @@ expired:
228 * SPD calls. 228 * SPD calls.
229 */ 229 */
230 230
231struct xfrm_policy *xfrm_policy_alloc(gfp_t gfp) 231struct xfrm_policy *xfrm_policy_alloc(struct net *net, gfp_t gfp)
232{ 232{
233 struct xfrm_policy *policy; 233 struct xfrm_policy *policy;
234 234
235 policy = kzalloc(sizeof(struct xfrm_policy), gfp); 235 policy = kzalloc(sizeof(struct xfrm_policy), gfp);
236 236
237 if (policy) { 237 if (policy) {
238 write_pnet(&policy->xp_net, net);
238 INIT_LIST_HEAD(&policy->walk.all); 239 INIT_LIST_HEAD(&policy->walk.all);
239 INIT_HLIST_NODE(&policy->bydst); 240 INIT_HLIST_NODE(&policy->bydst);
240 INIT_HLIST_NODE(&policy->byidx); 241 INIT_HLIST_NODE(&policy->byidx);
@@ -1153,7 +1154,7 @@ int xfrm_sk_policy_insert(struct sock *sk, int dir, struct xfrm_policy *pol)
1153 1154
1154static struct xfrm_policy *clone_policy(struct xfrm_policy *old, int dir) 1155static struct xfrm_policy *clone_policy(struct xfrm_policy *old, int dir)
1155{ 1156{
1156 struct xfrm_policy *newp = xfrm_policy_alloc(GFP_ATOMIC); 1157 struct xfrm_policy *newp = xfrm_policy_alloc(xp_net(old), GFP_ATOMIC);
1157 1158
1158 if (newp) { 1159 if (newp) {
1159 newp->selector = old->selector; 1160 newp->selector = old->selector;