Message ID | 6247d23117b18915f1c7f5325fa8fa77a14dbc19.1510183475.git.g.nault@alphalink.fr |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net-next] l2tp: don't close sessions in l2tp_tunnel_destruct() | expand |
From: Guillaume Nault <g.nault@alphalink.fr> Date: Thu, 9 Nov 2017 08:29:52 +0900 > Sessions are already removed by the proto ->destroy() handlers, and > since commit f3c66d4e144a ("l2tp: prevent creation of sessions on terminated tunnels"), > we're guaranteed that no new session can be created afterwards. > > Furthermore, l2tp_tunnel_closeall() can sleep when there are sessions > left to close. So we really shouldn't call it in a ->sk_destruct() > handler, as it can be used from atomic context. > > Signed-off-by: Guillaume Nault <g.nault@alphalink.fr> Applied, thank you.
diff --git a/net/l2tp/l2tp_core.c b/net/l2tp/l2tp_core.c index 7c8d1eb757a5..350fcd39ebd8 100644 --- a/net/l2tp/l2tp_core.c +++ b/net/l2tp/l2tp_core.c @@ -1246,8 +1246,6 @@ static void l2tp_tunnel_destruct(struct sock *sk) list_del_rcu(&tunnel->list); spin_unlock_bh(&pn->l2tp_tunnel_list_lock); - l2tp_tunnel_closeall(tunnel); - tunnel->sock = NULL; l2tp_tunnel_dec_refcount(tunnel);
Sessions are already removed by the proto ->destroy() handlers, and since commit f3c66d4e144a ("l2tp: prevent creation of sessions on terminated tunnels"), we're guaranteed that no new session can be created afterwards. Furthermore, l2tp_tunnel_closeall() can sleep when there are sessions left to close. So we really shouldn't call it in a ->sk_destruct() handler, as it can be used from atomic context. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr> --- net/l2tp/l2tp_core.c | 2 -- 1 file changed, 2 deletions(-)