aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/devices/virtio/vhost-user.c
diff options
context:
space:
mode:
authorSteven <sluong@cisco.com>2017-04-25 13:49:51 -0700
committerDamjan Marion <dmarion.lists@gmail.com>2017-04-26 15:37:08 +0000
commit417488643611acbf8e3e2525d1e6c83f5eb107fa (patch)
treec0e5c9ad0cbe151f5408d4c03068f01313e61167 /src/vnet/devices/virtio/vhost-user.c
parent227038a444b98f922b4a4f44b85ae60f9ee86e1c (diff)
vhost: core dump on quit with worker threads
Patch 6347 removed the socket file when the interface is deleted and when VPP process is exitting. The CLI for deleting the interface has builtin vlib_worker_thread_barrier_sync to prevent the worker threads from running. Unfortunately, the CLI quit does not have the builtin vlib_worker_thread_barrier_sync. As a result, it may cause the worker thread to crash. The fix is to add the vlib_worker_thread_barrier_sync in vhost_user_exit. Change-Id: I1eff81170e131098f1799662f0ab48d6fca3def7 Signed-off-by: Steven <sluong@cisco.com>
Diffstat (limited to 'src/vnet/devices/virtio/vhost-user.c')
-rw-r--r--src/vnet/devices/virtio/vhost-user.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/vnet/devices/virtio/vhost-user.c b/src/vnet/devices/virtio/vhost-user.c
index 4f4f038a38b..bcfef9f5aee 100644
--- a/src/vnet/devices/virtio/vhost-user.c
+++ b/src/vnet/devices/virtio/vhost-user.c
@@ -2589,11 +2589,13 @@ vhost_user_exit (vlib_main_t * vm)
vhost_user_main_t *vum = &vhost_user_main;
vhost_user_intf_t *vui;
+ vlib_worker_thread_barrier_sync (vlib_get_main ());
/* *INDENT-OFF* */
pool_foreach (vui, vum->vhost_user_interfaces, {
vhost_user_delete_if (vnm, vm, vui->sw_if_index);
});
/* *INDENT-ON* */
+ vlib_worker_thread_barrier_release (vlib_get_main ());
return 0;
}