diff options
Diffstat (limited to 'vnet')
-rw-r--r-- | vnet/vnet/devices/virtio/vhost-user.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/vnet/vnet/devices/virtio/vhost-user.c b/vnet/vnet/devices/virtio/vhost-user.c index 25bcbca50ac..f00fd9665c6 100644 --- a/vnet/vnet/devices/virtio/vhost-user.c +++ b/vnet/vnet/devices/virtio/vhost-user.c @@ -344,6 +344,9 @@ vhost_user_socket_read (unix_file_t * uf) n = recvmsg (uf->file_descriptor, &mh, 0); + /* Stop workers to avoid end of the world */ + vlib_worker_thread_barrier_sync (vlib_get_main ()); + if (n != VHOST_USER_MSG_HDR_SZ) goto close_socket; @@ -724,10 +727,12 @@ vhost_user_socket_read (unix_file_t * uf) goto close_socket; } + vlib_worker_thread_barrier_release (vlib_get_main ()); return 0; close_socket: vhost_user_if_disconnect (vui); + vlib_worker_thread_barrier_release (vlib_get_main ()); return 0; } |