summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJorgen Hansen <jhansen@vmware.com>2017-11-27 05:29:32 -0800
committerDavid S. Miller <davem@davemloft.net>2017-11-28 16:01:50 -0500
commit4a5def7f6a758aef1a0a3b10e981881c1e914f69 (patch)
tree6f9d3ba6b242b1dc490aaa7bdeadcb20f19d8d15 /net
parent22dac9f1fdd576c1d03ba00f4a9db9a864a43a70 (diff)
downloadlinux-stable-4a5def7f6a758aef1a0a3b10e981881c1e914f69.tar.gz
linux-stable-4a5def7f6a758aef1a0a3b10e981881c1e914f69.tar.bz2
linux-stable-4a5def7f6a758aef1a0a3b10e981881c1e914f69.zip
VSOCK: Don't set sk_state to TCP_CLOSE before testing it
A recent commit (3b4477d2dcf2) converted the sk_state to use TCP constants. In that change, vmci_transport_handle_detach was changed such that sk->sk_state was set to TCP_CLOSE before we test whether it is TCP_SYN_SENT. This change moves the sk_state change back to the original locations in that function. Signed-off-by: Jorgen Hansen <jhansen@vmware.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/vmw_vsock/vmci_transport.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c
index 56573dc85709..a7a73ffe675b 100644
--- a/net/vmw_vsock/vmci_transport.c
+++ b/net/vmw_vsock/vmci_transport.c
@@ -804,8 +804,6 @@ static void vmci_transport_handle_detach(struct sock *sk)
*/
if (vsk->local_addr.svm_cid == VMADDR_CID_HOST ||
vsock_stream_has_data(vsk) <= 0) {
- sk->sk_state = TCP_CLOSE;
-
if (sk->sk_state == TCP_SYN_SENT) {
/* The peer may detach from a queue pair while
* we are still in the connecting state, i.e.,
@@ -815,10 +813,12 @@ static void vmci_transport_handle_detach(struct sock *sk)
* event like a reset.
*/
+ sk->sk_state = TCP_CLOSE;
sk->sk_err = ECONNRESET;
sk->sk_error_report(sk);
return;
}
+ sk->sk_state = TCP_CLOSE;
}
sk->sk_state_change(sk);
}