diff options
Diffstat (limited to 'net/l2tp/l2tp_ip.c')
| -rw-r--r-- | net/l2tp/l2tp_ip.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c index 7f41b705126..571db8dd229 100644 --- a/net/l2tp/l2tp_ip.c +++ b/net/l2tp/l2tp_ip.c @@ -228,10 +228,16 @@ static void l2tp_ip_close(struct sock *sk, long timeout)  static void l2tp_ip_destroy_sock(struct sock *sk)  {  	struct sk_buff *skb; +	struct l2tp_tunnel *tunnel = l2tp_sock_to_tunnel(sk);  	while ((skb = __skb_dequeue_tail(&sk->sk_write_queue)) != NULL)  		kfree_skb(skb); +	if (tunnel) { +		l2tp_tunnel_closeall(tunnel); +		sock_put(sk); +	} +  	sk_refcnt_debug_dec(sk);  }  |