diff options
author | Peng Tao <bergwolf@gmail.com> | 2016-12-08 12:10:46 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-12-08 21:24:30 -0500 |
commit | c4587631c7bad47c045e081d1553cd73a23be59a (patch) | |
tree | dca17e05e83359df10a2786707d633314a08b99f | |
parent | 1e97426d29fec42e559d12cdb069c83962be762e (diff) |
vhost-vsock: fix orphan connection reset
local_addr.svm_cid is host cid. We should check guest cid instead,
which is remote_addr.svm_cid. Otherwise we end up resetting all
connections to all guests.
Cc: stable@vger.kernel.org [4.8+]
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Peng Tao <bergwolf@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/vhost/vsock.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c index e3b30ea9ece5..a504e2e003da 100644 --- a/drivers/vhost/vsock.c +++ b/drivers/vhost/vsock.c | |||
@@ -506,7 +506,7 @@ static void vhost_vsock_reset_orphans(struct sock *sk) | |||
506 | * executing. | 506 | * executing. |
507 | */ | 507 | */ |
508 | 508 | ||
509 | if (!vhost_vsock_get(vsk->local_addr.svm_cid)) { | 509 | if (!vhost_vsock_get(vsk->remote_addr.svm_cid)) { |
510 | sock_set_flag(sk, SOCK_DONE); | 510 | sock_set_flag(sk, SOCK_DONE); |
511 | vsk->peer_shutdown = SHUTDOWN_MASK; | 511 | vsk->peer_shutdown = SHUTDOWN_MASK; |
512 | sk->sk_state = SS_UNCONNECTED; | 512 | sk->sk_state = SS_UNCONNECTED; |