summaryrefslogtreecommitdiffstats
path: root/src/vnet/dpo/classify_dpo.c
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2020-06-05 09:42:50 -0400
committerNeale Ranns <nranns@cisco.com>2020-06-07 09:11:48 +0000
commit26d890eb4b1ab19fea4d2d02bfc6dc89d2c1b771 (patch)
treed41cc9331ed079ec5c91b76bb87e6a3178046522 /src/vnet/dpo/classify_dpo.c
parentc2d2228e928b7c69dc88e9c3b7502966d0e32d8d (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/classify_dpo.c')
-rw-r--r--src/vnet/dpo/classify_dpo.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/vnet/dpo/classify_dpo.c b/src/vnet/dpo/classify_dpo.c
index 08fab83f2ee..bc536a10266 100644
--- a/src/vnet/dpo/classify_dpo.c
+++ b/src/vnet/dpo/classify_dpo.c
@@ -26,8 +26,13 @@ static classify_dpo_t *
classify_dpo_alloc (void)
{
classify_dpo_t *cd;
+ vlib_main_t *vm;
+ u8 did_barrier_sync;
+ dpo_pool_barrier_sync (vm, classify_dpo_pool, did_barrier_sync);
pool_get_aligned(classify_dpo_pool, cd, CLIB_CACHE_LINE_BYTES);
+ dpo_pool_barrier_release (vm, did_barrier_sync);
+
clib_memset(cd, 0, sizeof(*cd));
return (cd);