From: Amir Vadai Date: Thu, 20 Nov 2008 13:02:46 +0000 (+0200) Subject: SDP: BUG1348 - a socket is left after netper on the server side X-Git-Tag: v4.1.12-92~264^2~5^2~303 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=07da37d6146c173cdd79e653f5d91609da55d040;p=users%2Fjedix%2Flinux-maple.git SDP: BUG1348 - a socket is left after netper on the server side Removed unneccessary sock_hold from sdp_shutdown. This ref count will be taken by close(). no need to take it twice. Signed-off-by: Amir Vadai --- diff --git a/drivers/infiniband/ulp/sdp/sdp_main.c b/drivers/infiniband/ulp/sdp/sdp_main.c index 0d34aa00bf35d..1b69de0b291f6 100644 --- a/drivers/infiniband/ulp/sdp/sdp_main.c +++ b/drivers/infiniband/ulp/sdp/sdp_main.c @@ -933,11 +933,16 @@ static void sdp_shutdown(struct sock *sk, int how) if (!(how & SEND_SHUTDOWN)) return; + /* If we've already sent a FIN, or it's a closed state, skip this. */ + if (!((1 << sk->sk_state) & + (TCPF_ESTABLISHED | TCPF_SYN_SENT | + TCPF_SYN_RECV | TCPF_CLOSE_WAIT))) { + return; + } + if (!sdp_close_state(sk)) return; - sock_hold(sk, SOCK_REF_CM_TW); - /* * Just turn off CORK here. * We could check for socket shutting down in main data path,