From 695a11e85aa21b8782229e39736ee43ce46b3ea5 Mon Sep 17 00:00:00 2001 From: "xeb@mail.ru" Date: Fri, 24 Aug 2012 01:07:38 +0000 Subject: [PATCH] --- yaml --- r: 322437 b: refs/heads/master c: 99469c32f79a32d8481f87be0d3c66dad286f4ec h: refs/heads/master i: 322435: afbd923450cd79582bd715a646c3f0382b5f32ee v: v3 --- [refs] | 2 +- trunk/net/l2tp/l2tp_core.c | 3 +-- trunk/net/l2tp/l2tp_core.h | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index ae7bad73a6ee..9d5a927bbed5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e2c53be223aca36cf93eb6a0f6bafa079e78f52b +refs/heads/master: 99469c32f79a32d8481f87be0d3c66dad286f4ec diff --git a/trunk/net/l2tp/l2tp_core.c b/trunk/net/l2tp/l2tp_core.c index 393355d37b47..513cab08a986 100644 --- a/trunk/net/l2tp/l2tp_core.c +++ b/trunk/net/l2tp/l2tp_core.c @@ -1347,11 +1347,10 @@ static void l2tp_tunnel_free(struct l2tp_tunnel *tunnel) /* Remove from tunnel list */ spin_lock_bh(&pn->l2tp_tunnel_list_lock); list_del_rcu(&tunnel->list); + kfree_rcu(tunnel, rcu); spin_unlock_bh(&pn->l2tp_tunnel_list_lock); - synchronize_rcu(); atomic_dec(&l2tp_tunnel_count); - kfree(tunnel); } /* Create a socket for the tunnel, if one isn't set up by diff --git a/trunk/net/l2tp/l2tp_core.h b/trunk/net/l2tp/l2tp_core.h index a38ec6cdeee1..56d583e083a7 100644 --- a/trunk/net/l2tp/l2tp_core.h +++ b/trunk/net/l2tp/l2tp_core.h @@ -163,6 +163,7 @@ struct l2tp_tunnel_cfg { struct l2tp_tunnel { int magic; /* Should be L2TP_TUNNEL_MAGIC */ + struct rcu_head rcu; rwlock_t hlist_lock; /* protect session_hlist */ struct hlist_head session_hlist[L2TP_HASH_SIZE]; /* hashed list of sessions,