[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220310081854.2487280-1-jiyong@google.com>
Date: Thu, 10 Mar 2022 17:18:54 +0900
From: Jiyong Park <jiyong@...gle.com>
To: Stefan Hajnoczi <stefanha@...hat.com>,
Stefano Garzarella <sgarzare@...hat.com>,
"Michael S. Tsirkin" <mst@...hat.com>,
Jason Wang <jasowang@...hat.com>
Cc: adelva@...gle.com, Jiyong Park <jiyong@...gle.com>,
kvm@...r.kernel.org, virtualization@...ts.linux-foundation.org,
netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH] vhost/vsock: reset only the h2g connections upon release
Filtering non-h2g connections out when determining orphaned connections.
Otherwise, in a nested VM configuration, destroying the nested VM (which
often involves the closing of /dev/vhost-vsock if there was h2g
connections to the nested VM) kills not only the h2g connections, but
also all existing g2h connections to the (outmost) host which are
totally unrelated.
Tested: Executed the following steps on Cuttlefish (Android running on a
VM) [1]: (1) Enter into an `adb shell` session - to have a g2h
connection inside the VM, (2) open and then close /dev/vhost-vsock by
`exec 3< /dev/vhost-vsock && exec 3<&-`, (3) observe that the adb
session is not reset.
[1] https://android.googlesource.com/device/google/cuttlefish/
Signed-off-by: Jiyong Park <jiyong@...gle.com>
---
drivers/vhost/vsock.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c
index 37f0b4274113..2f6d5d66f5ed 100644
--- a/drivers/vhost/vsock.c
+++ b/drivers/vhost/vsock.c
@@ -722,6 +722,10 @@ static void vhost_vsock_reset_orphans(struct sock *sk)
* executing.
*/
+ /* Only the h2g connections are reset */
+ if (vsk->transport != &vhost_transport.transport)
+ return;
+
/* If the peer is still valid, no need to reset connection */
if (vhost_vsock_get(vsk->remote_addr.svm_cid))
return;
--
2.35.1.723.g4982287a31-goog
Powered by blists - more mailing lists