From a8c720e301f3576506b2b284fe925b055398b638 Mon Sep 17 00:00:00 2001 From: Nathan Skrzypczak Date: Fri, 6 Aug 2021 12:03:11 +0200 Subject: [PATCH] vppinfra: Fix bihash del warning Type: fix When freeing an uninstantiated bihash created with dont_add_to_all_bihash_list = 1 we get a warning. This removes the warning & the search for the bihash on cleanup. Change-Id: Iac50ce7e30b97925768f7ad3cb1d30af14686e21 Signed-off-by: Nathan Skrzypczak --- src/vppinfra/bihash_template.c | 6 ++++++ src/vppinfra/bihash_template.h | 1 + 2 files changed, 7 insertions(+) diff --git a/src/vppinfra/bihash_template.c b/src/vppinfra/bihash_template.c index ddaccbdb126..a6fa6267c79 100644 --- a/src/vppinfra/bihash_template.c +++ b/src/vppinfra/bihash_template.c @@ -201,6 +201,7 @@ void BV (clib_bihash_init2) (BVT (clib_bihash_init2_args) * a) h->log2_nbuckets = max_log2 (a->nbuckets); h->memory_size = BIHASH_USE_HEAP ? 0 : a->memory_size; h->instantiated = 0; + h->dont_add_to_all_bihash_list = a->dont_add_to_all_bihash_list; h->fmt_fn = BV (format_bihash); h->kvp_fmt_fn = a->kvp_fmt_fn; @@ -435,6 +436,11 @@ void BV (clib_bihash_free) (BVT (clib_bihash) * h) clib_mem_vm_free ((void *) (uword) (alloc_arena (h)), alloc_arena_size (h)); never_initialized: + if (h->dont_add_to_all_bihash_list) + { + clib_memset_u8 (h, 0, sizeof (*h)); + return; + } clib_memset_u8 (h, 0, sizeof (*h)); for (i = 0; i < vec_len (clib_all_bihashes); i++) { diff --git a/src/vppinfra/bihash_template.h b/src/vppinfra/bihash_template.h index da2f684b685..2a5c5861d88 100644 --- a/src/vppinfra/bihash_template.h +++ b/src/vppinfra/bihash_template.h @@ -170,6 +170,7 @@ BVS (clib_bihash) u64 alloc_arena; /* Base of the allocation arena */ volatile u8 instantiated; + u8 dont_add_to_all_bihash_list; /** * A custom format function to print the Key and Value of bihash_key instead of default hexdump -- 2.16.6