diff options
author | Steve Shin <jonshin@cisco.com> | 2017-06-02 10:09:02 -0700 |
---|---|---|
committer | Steve Shin <jonshin@cisco.com> | 2017-06-02 15:17:32 -0700 |
commit | 871cdec1b5fe5e0b0ccd70cf2e6fbedad0902c9f (patch) | |
tree | 77dd4ab976bf1b752ea1df7038b4c034cfd8d660 /src/vppinfra/bihash_template.c | |
parent | f98bb74372410ed207891b744285cdb0618b560b (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>
Diffstat (limited to 'src/vppinfra/bihash_template.c')
-rw-r--r-- | src/vppinfra/bihash_template.c | 3 |
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); } |