From ec950c23a7e3ac7bd46653addc3cca294b2daa6a Mon Sep 17 00:00:00 2001 From: Steven Luong Date: Wed, 23 Jan 2019 22:20:19 -0800 Subject: vhost: potential crash in map_guest_mem using debug image map_guest_mem may be called from worker-thread/dataplane. It has a call to vlib_log and may crash inside vlib_log's ASSERT statement /* make sure we are running on the main thread to avoid use in dataplane code, for dataplane logging consider use of event-logger */ ASSERT (vlib_get_thread_index () == 0); The fix is to convert the vlib_log call in map_guest_map to event logger Change-Id: Iaaf6d86782aa8a18d25e0209f22dc31f04668d56 Signed-off-by: Steven Luong (cherry picked from commit b0789106cb4f4c7ac529c02a5ff1ac346f0913dd) --- src/vnet/devices/virtio/vhost_user_inline.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/vnet/devices/virtio/vhost_user_inline.h b/src/vnet/devices/virtio/vhost_user_inline.h index 02c15ad666f..544e2d36952 100644 --- a/src/vnet/devices/virtio/vhost_user_inline.h +++ b/src/vnet/devices/virtio/vhost_user_inline.h @@ -15,6 +15,7 @@ #ifndef __VIRTIO_VHOST_USER_INLINE_H__ #define __VIRTIO_VHOST_USER_INLINE_H__ /* vhost-user inline functions */ +#include static_always_inline void * map_guest_mem (vhost_user_intf_t * vui, uword addr, u32 * hint) @@ -134,7 +135,19 @@ vhost_map_guest_mem_done: } } #endif - vu_log_err (vui, "failed to map guest mem addr %llx", addr); + /* *INDENT-OFF* */ + ELOG_TYPE_DECLARE (el) = + { + .format = "failed to map guest mem addr %lx", + .format_args = "i8", + }; + /* *INDENT-ON* */ + struct + { + uword addr; + } *ed; + ed = ELOG_DATA (&vlib_global_main.elog_main, el); + ed->addr = addr; *hint = 0; return 0; } -- cgit 1.2.3-korg