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/receive_dpo.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/vnet/dpo/receive_dpo.c') diff --git a/src/vnet/dpo/receive_dpo.c b/src/vnet/dpo/receive_dpo.c index 949dbfa6587..b12b382ce64 100644 --- a/src/vnet/dpo/receive_dpo.c +++ b/src/vnet/dpo/receive_dpo.c @@ -35,8 +35,13 @@ static receive_dpo_t * receive_dpo_alloc (void) { receive_dpo_t *rd; + vlib_main_t *vm; + u8 did_barrier_sync; + dpo_pool_barrier_sync (vm, receive_dpo_pool, did_barrier_sync); pool_get_aligned(receive_dpo_pool, rd, CLIB_CACHE_LINE_BYTES); + dpo_pool_barrier_release (vm, did_barrier_sync); + clib_memset(rd, 0, sizeof(*rd)); return (rd); -- cgit 1.2.3-korg