summaryrefslogtreecommitdiffstats
path: root/src/vlibmemory/api_common.h
diff options
context:
space:
mode:
authorDave Barach <dbarach@cisco.com>2017-12-15 12:22:57 -0500
committerJohn Lo <loj@cisco.com>2017-12-15 22:32:11 +0000
commit2877eee189993dbd1b9a5c3d22499930a4768786 (patch)
tree7c106163b2595a06441c329a2781537929296bc9 /src/vlibmemory/api_common.h
parent891f0a1caa795ed7799f0c6faa1cb91b4669d4da (diff)
VPP-1102: fix dangling references in RPC handling
Queue RPC calls and send them from the main dispatch loop. As things stood, if the vpp main input queue filled, worker threads could enter a barrier-sync spin-wait in the middle of processing a frame. If thread 0 decided to recreate worker thread data structures, the worker thread(s) could easily crash. Legislate the problem out of existence by enqueueing RPC messages only from the main dispatch loop. At that point, doing a barrier-sync wait is perfectly OK. Change-Id: I18da3e44bb1f29a63fe5f30cf11de732ecfd5bf7 Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'src/vlibmemory/api_common.h')
-rw-r--r--src/vlibmemory/api_common.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/vlibmemory/api_common.h b/src/vlibmemory/api_common.h
index 63a7e5e4188..2080a4bb18e 100644
--- a/src/vlibmemory/api_common.h
+++ b/src/vlibmemory/api_common.h
@@ -132,6 +132,7 @@ u32 vl_api_memclnt_create_internal (char *, unix_shared_memory_queue_t *);
void vl_init_shmem (svm_region_t * vlib_rp, int is_vlib,
int is_private_region);
void vl_client_install_client_message_handlers (void);
+void vl_api_send_pending_rpc_requests (vlib_main_t * vm);
/* API messages over sockets */