acl vnet vlib: memory leaks 88/20188/2
authorSteven Luong <sluong@cisco.com>
Wed, 12 Jun 2019 05:44:20 +0000 (22:44 -0700)
committerDave Wallace <dwallacelf@gmail.com>
Tue, 18 Jun 2019 13:48:04 +0000 (13:48 +0000)
Fix memory leaks in acl, vnet, and vlib components.

Type: fix

Change-Id: I61c84ebbacbbf3215db0d4aaa7699e8d5f8df2da
Signed-off-by: Steven Luong <sluong@cisco.com>
(cherry picked from commit 4221c8de596f3f3f66b4cbb36ad2d0c23486030c)

src/plugins/acl/sess_mgmt_node.c
src/vlib/error.c
src/vnet/interface.c

index 7da6da4..4070e52 100644 (file)
@@ -727,6 +727,7 @@ acl_fa_session_cleaner_process (vlib_main_t * vm, vlib_node_runtime_t * rt,
                }
              else
                {
+                 clib_bitmap_free (pw0->pending_clear_sw_if_index_bitmap);
                  if (clear_all)
                    {
                      /* if we need to clear all, then just clear the interfaces that we are servicing */
index a416649..1a48c9e 100644 (file)
@@ -188,18 +188,19 @@ vlib_register_errors (vlib_main_t * vm,
   /* (re)register the em->counters base address, switch back to main heap */
   vlib_stats_pop_heap2 (em->counters, vm->thread_index, oldheap);
 
-  {
-    elog_event_type_t t;
-    uword i;
+  if (VLIB_ELOG_MAIN_LOOP > 0)
+    {
+      elog_event_type_t t;
+      uword i;
 
-    clib_memset (&t, 0, sizeof (t));
-    for (i = 0; i < n_errors; i++)
-      {
-       t.format = (char *) format (0, "%v %s: %%d",
-                                   n->name, error_strings[i]);
-       vm->error_elog_event_types[n->error_heap_index + i] = t;
-      }
-  }
+      clib_memset (&t, 0, sizeof (t));
+      for (i = 0; i < n_errors; i++)
+       {
+         t.format = (char *) format (0, "%v %s: %%d",
+                                     n->name, error_strings[i]);
+         vm->error_elog_event_types[n->error_heap_index + i] = t;
+       }
+    }
 }
 
 static clib_error_t *
index dbfe496..124d2ac 100644 (file)
@@ -1011,6 +1011,7 @@ vnet_delete_hw_interface (vnet_main_t * vnm, u32 hw_if_index)
   vec_free (hw->name);
   vec_free (hw->hw_address);
   vec_free (hw->input_node_thread_index_by_queue);
+  vec_free (hw->rx_mode_by_queue);
   vec_free (hw->dq_runtime_index_by_queue);
 
   pool_put (im->hw_interfaces, hw);