diff options
author | Dave Barach <dave@barachs.net> | 2020-06-05 09:42:50 -0400 |
---|---|---|
committer | Neale Ranns <nranns@cisco.com> | 2020-06-07 09:11:48 +0000 |
commit | 26d890eb4b1ab19fea4d2d02bfc6dc89d2c1b771 (patch) | |
tree | d41cc9331ed079ec5c91b76bb87e6a3178046522 /src/vnet/dpo/load_balance_map.c | |
parent | c2d2228e928b7c69dc88e9c3b7502966d0e32d8d (diff) |
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 <dave@barachs.net>
Change-Id: I09299124a25f8d541e3bb4b75375568990e9b911
Diffstat (limited to 'src/vnet/dpo/load_balance_map.c')
-rw-r--r-- | src/vnet/dpo/load_balance_map.c | 5 |
1 files changed, 5 insertions, 0 deletions
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); |