Stefano Garzarella
2022-Mar-10 14:14 UTC
[PATCH v3] vsock: each transport cycles only on its own sockets
On Thu, Mar 10, 2022 at 10:50:11PM +0900, Jiyong Park wrote:>When iterating over sockets using vsock_for_each_connected_socket, make >sure that a transport filters out sockets that don't belong to the >transport. > >There actually was an issue caused by this; 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/ > >Fixes: c0cfa2d8a788 ("vsock: add multi-transports support") >Signed-off-by: Jiyong Park <jiyong at google.com> >--- >Changes in v3: > - Fixed the build error in vmci_transport.c >Changes in v2: > - Squashed into a single patch > > drivers/vhost/vsock.c | 3 ++- > include/net/af_vsock.h | 3 ++- > net/vmw_vsock/af_vsock.c | 9 +++++++-- > net/vmw_vsock/virtio_transport.c | 7 +++++-- > net/vmw_vsock/vmci_transport.c | 5 ++++- > 5 files changed, 20 insertions(+), 7 deletions(-)It seems okay now, I ran my test suite and everything seems to be fine: Reviewed-by: Stefano Garzarella <sgarzare at redhat.com> Thanks, Stefano
Michael S. Tsirkin
2022-Mar-10 15:28 UTC
[PATCH v3] vsock: each transport cycles only on its own sockets
On Thu, Mar 10, 2022 at 03:14:20PM +0100, Stefano Garzarella wrote:> On Thu, Mar 10, 2022 at 10:50:11PM +0900, Jiyong Park wrote: > > When iterating over sockets using vsock_for_each_connected_socket, make > > sure that a transport filters out sockets that don't belong to the > > transport. > > > > There actually was an issue caused by this; 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/ > > > > Fixes: c0cfa2d8a788 ("vsock: add multi-transports support") > > Signed-off-by: Jiyong Park <jiyong at google.com> > > --- > > Changes in v3: > > - Fixed the build error in vmci_transport.c > > Changes in v2: > > - Squashed into a single patch > > > > drivers/vhost/vsock.c | 3 ++- > > include/net/af_vsock.h | 3 ++- > > net/vmw_vsock/af_vsock.c | 9 +++++++-- > > net/vmw_vsock/virtio_transport.c | 7 +++++-- > > net/vmw_vsock/vmci_transport.c | 5 ++++- > > 5 files changed, 20 insertions(+), 7 deletions(-) > > It seems okay now, I ran my test suite and everything seems to be fine: > > Reviewed-by: Stefano Garzarella <sgarzare at redhat.com> > > Thanks, > StefanocThanks! Acked-by: Michael S. Tsirkin <mst at redhat.com> Not a new regression so I think we should take this in the next cycle, let's be careful here especially since previous version was not even build-tested by the contributor. -- MST