diff options
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index b04e5adf7ebd..ad0463df31b2 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -1879,8 +1879,14 @@ restart: sk->sk_err = ETIMEDOUT; sk->sk_error_report(sk); + + sock_hold(sk); spin_unlock_bh(lock); + bh_lock_sock(sk); tcp_done(sk); + bh_unlock_sock(sk); + sock_put(sk); + goto restart; } spin_unlock_bh(lock); |