vppinfra: Fix bihash del warning 91/33391/2
authorNathan Skrzypczak <nathan.skrzypczak@gmail.com>
Fri, 6 Aug 2021 10:03:11 +0000 (12:03 +0200)
committerFlorin Coras <florin.coras@gmail.com>
Tue, 10 Aug 2021 22:55:20 +0000 (22:55 +0000)
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 <nathan.skrzypczak@gmail.com>
src/vppinfra/bihash_template.c
src/vppinfra/bihash_template.h

index ddaccbd..a6fa626 100644 (file)
@@ -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++)
     {
index da2f684..2a5c586 100644 (file)
@@ -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