From 871cdec1b5fe5e0b0ccd70cf2e6fbedad0902c9f Mon Sep 17 00:00:00 2001 From: Steve Shin Date: Fri, 2 Jun 2017 10:09:02 -0700 Subject: Fix mac_age process crash in multi-threaded environment VPP crash is observed when MAC aging is enabled with multi-threaded mode. If a thread other-than-zero expands the working_copies vector, working_copy_lengths should be initialized with vec_validate_init_empty(..., -1) to fill -1 across lower-numbered working_copy_lengths vector element. Change-Id: I60959fc6511306b33acae323df9c6898fc6c50ce Signed-off-by: Steve Shin --- src/vppinfra/bihash_template.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/vppinfra/bihash_template.c b/src/vppinfra/bihash_template.c index 7e4216bd..7117f994 100644 --- a/src/vppinfra/bihash_template.c +++ b/src/vppinfra/bihash_template.c @@ -100,8 +100,7 @@ BV (make_working_copy) (BVT (clib_bihash) * h, clib_bihash_bucket_t * b) { oldheap = clib_mem_set_heap (h->mheap); vec_validate (h->working_copies, thread_index); - vec_validate (h->working_copy_lengths, thread_index); - h->working_copy_lengths[thread_index] = -1; + vec_validate_init_empty (h->working_copy_lengths, thread_index, ~0); clib_mem_set_heap (oldheap); } -- cgit 1.2.3-korg