l2tp: avoid to use synchronize_rcu in tunnel free function
Subsystems (2)
PATCH 1/1 l2tp: avoid to use synchronize_rcu in tunnel free function
Avoid to use synchronize_rcu in l2tp_tunnel_free because context may be atomic.
Signed-off-by Dmitry Kozlov <[email protected]>
--- net/l2tp/l2tp_core.c | 3 +-- net/l2tp/l2tp_core.h | 1 + 2 files changed, 2 insertions(+), 2 deletions(-)
net/l2tp/l2tp_core.c +1 -2
@@ -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
net/l2tp/l2tp_core.h +1 -0
@@ -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,
David Miller
maintainerFrom: Kozlov Dmitry <[email protected]>
Date: Fri, 24 Aug 2012 15:07:38 +0400
Quoted 4 lines
Avoid to use
synchronize_rcuinl2tp_tunnel_freebecause context may be atomic.Signed-off-by Dmitry Kozlov <[email protected]>
Applied and queued up for -stable, thanks.