bihash template: avoid memory leak upon rehash 14/14914/4
authorAndrew Yourtchenko <ayourtch@gmail.com>
Thu, 20 Sep 2018 13:36:51 +0000 (15:36 +0200)
committerDave Barach <openvpp@barachs.net>
Thu, 20 Sep 2018 19:13:25 +0000 (19:13 +0000)
Call the BV (value_free) when we have performed the rehash
and thus no longer need the memory that old value for the
bucket refers to.

Change-Id: Ibb82174fc8002aeb3e1a6c8d1f90293d73bc45d8
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
src/vppinfra/bihash_template.c

index 2571c47..752597e 100644 (file)
@@ -627,6 +627,9 @@ expand_ok:
   tmp_b.lock = 0;
   CLIB_MEMORY_BARRIER ();
   b->as_u64 = tmp_b.as_u64;
+  /* free the old bucket */
+  v = BV (clib_bihash_get_value) (h, h->saved_bucket.offset);
+  BV (value_free) (h, v, h->saved_bucket.log2_pages);
   BV (clib_bihash_alloc_unlock) (h);
   return (0);
 }