X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=net%2Fl2tp%2Fl2tp_ip6.c;h=c74f5a91ff6a3213209c23ff488f0b475a552857;hb=fb1c2d8294a60184a151ff12182446d7b930ed95;hp=41f2f8126ebc720933638f67eb800f17797987e7;hpb=529e5fbcd8d3cb48cf824ac8fde91cc80a9e985f;p=firefly-linux-kernel-4.4.55.git diff --git a/net/l2tp/l2tp_ip6.c b/net/l2tp/l2tp_ip6.c index 41f2f8126ebc..c74f5a91ff6a 100644 --- a/net/l2tp/l2tp_ip6.c +++ b/net/l2tp/l2tp_ip6.c @@ -241,10 +241,17 @@ static void l2tp_ip6_close(struct sock *sk, long timeout) static void l2tp_ip6_destroy_sock(struct sock *sk) { + struct l2tp_tunnel *tunnel = l2tp_sock_to_tunnel(sk); + lock_sock(sk); ip6_flush_pending_frames(sk); release_sock(sk); + if (tunnel) { + l2tp_tunnel_closeall(tunnel); + sock_put(sk); + } + inet6_destroy_sock(sk); }