From a5fb0becff403c4a9a779cbc9d668cc881a40db0 Mon Sep 17 00:00:00 2001 From: Konstantin Khorenko Date: Thu, 24 Jun 2010 21:54:58 -0700 Subject: [PATCH] --- yaml --- r: 203149 b: refs/heads/master c: 565b7b2d2e632b5792879c0c9cccdd9eecd31195 h: refs/heads/master i: 203147: 4a76616919f1ac1dc386fd4cf64e52bf0b2dd8a4 v: v3 --- [refs] | 2 +- trunk/net/ipv4/tcp.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index f905afcb866a..01243f4de010 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7a938f80264f2cbfb0c0841b450eab42a8093281 +refs/heads/master: 565b7b2d2e632b5792879c0c9cccdd9eecd31195 diff --git a/trunk/net/ipv4/tcp.c b/trunk/net/ipv4/tcp.c index 779d40c3b96e..d5f84bd5a455 100644 --- a/trunk/net/ipv4/tcp.c +++ b/trunk/net/ipv4/tcp.c @@ -1898,6 +1898,10 @@ void tcp_close(struct sock *sk, long timeout) sk_mem_reclaim(sk); + /* If socket has been already reset (e.g. in tcp_reset()) - kill it. */ + if (sk->sk_state == TCP_CLOSE) + goto adjudge_to_death; + /* As outlined in RFC 2525, section 2.17, we send a RST here because * data was lost. To witness the awful effects of the old behavior of * always doing a FIN, run an older 2.1.x kernel or 2.0.x, start a bulk