summaryrefslogtreecommitdiff
path: root/net/ipv4/tcp_ipv4.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
-rw-r--r--net/ipv4/tcp_ipv4.c6
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);