diff options
Diffstat (limited to 'net/l2tp/l2tp_ip6.c')
| -rw-r--r-- | net/l2tp/l2tp_ip6.c | 7 |
1 files changed, 7 insertions, 0 deletions
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) | |||
| 241 | 241 | ||
| 242 | static void l2tp_ip6_destroy_sock(struct sock *sk) | 242 | static void l2tp_ip6_destroy_sock(struct sock *sk) |
| 243 | { | 243 | { |
| 244 | struct l2tp_tunnel *tunnel = l2tp_sock_to_tunnel(sk); | ||
| 245 | |||
| 244 | lock_sock(sk); | 246 | lock_sock(sk); |
| 245 | ip6_flush_pending_frames(sk); | 247 | ip6_flush_pending_frames(sk); |
| 246 | release_sock(sk); | 248 | release_sock(sk); |
| 247 | 249 | ||
| 250 | if (tunnel) { | ||
| 251 | l2tp_tunnel_closeall(tunnel); | ||
| 252 | sock_put(sk); | ||
| 253 | } | ||
| 254 | |||
| 248 | inet6_destroy_sock(sk); | 255 | inet6_destroy_sock(sk); |
| 249 | } | 256 | } |
| 250 | 257 | ||
