From 26d890eb4b1ab19fea4d2d02bfc6dc89d2c1b771 Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Fri, 5 Jun 2020 09:42:50 -0400 Subject: fib: fix multiple dpo pool expand cases Add dpo_pool_barrier_sync/release, use them to clean up thread-unsafe pool expansion cases. Type: fix Signed-off-by: Dave Barach Change-Id: I09299124a25f8d541e3bb4b75375568990e9b911 --- src/vnet/dpo/load_balance_map.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/vnet/dpo/load_balance_map.c') diff --git a/src/vnet/dpo/load_balance_map.c b/src/vnet/dpo/load_balance_map.c index 7da360b88ac..c03acaf2d70 100644 --- a/src/vnet/dpo/load_balance_map.c +++ b/src/vnet/dpo/load_balance_map.c @@ -387,8 +387,13 @@ load_balance_map_alloc (const load_balance_path_t *paths) { load_balance_map_t *lbm; u32 ii; + vlib_main_t *vm; + u8 did_barrier_sync; + dpo_pool_barrier_sync (vm, load_balance_map_pool, did_barrier_sync); pool_get_aligned(load_balance_map_pool, lbm, CLIB_CACHE_LINE_BYTES); + dpo_pool_barrier_release (vm, did_barrier_sync); + clib_memset(lbm, 0, sizeof(*lbm)); vec_validate(lbm->lbm_paths, vec_len(paths)-1); -- cgit 1.2.3-korg