aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Shin <jonshin@cisco.com>2017-06-02 10:09:02 -0700
committerSteve Shin <jonshin@cisco.com>2017-06-02 15:17:32 -0700
commit871cdec1b5fe5e0b0ccd70cf2e6fbedad0902c9f (patch)
tree77dd4ab976bf1b752ea1df7038b4c034cfd8d660
parentf98bb74372410ed207891b744285cdb0618b560b (diff)
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 <jonshin@cisco.com>
-rw-r--r--src/vppinfra/bihash_template.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/vppinfra/bihash_template.c b/src/vppinfra/bihash_template.c
index 7e4216bdeb9..7117f9941e2 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);
}