From 22665d23e1ec4d5de10f610441d98d593a89b20a Mon Sep 17 00:00:00 2001 From: Pierre Pfister Date: Wed, 9 Nov 2016 10:16:57 +0000 Subject: Vhost: Add thread sync while receiving vhost message It is important to stop the working threads while some operations are performed on the working threads. This is a backport of a fix brought in commit e21c52861d. This should solve Jira ticket VPP526 Change-Id: I6deb27f5de44f0f19401161ee6adecaba86dae1a Signed-off-by: Pierre Pfister --- vnet/vnet/devices/virtio/vhost-user.c | 5 +++++ 1 file changed, 5 insertions(+) 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; } -- cgit 1.2.3-korg