aboutsummaryrefslogtreecommitdiffstats
path: root/src/vlib/error.c
diff options
context:
space:
mode:
authorOle Troan <ot@cisco.com>2019-06-16 23:26:56 +0200
committerDamjan Marion <dmarion@me.com>2019-06-18 13:55:11 +0000
commitae945592b299b14b8d293b4c77b7d851a4f8ea11 (patch)
tree9acf5d2a6fc0d1857e1748eca8d9eb76dd2d2fa4 /src/vlib/error.c
parent4d0c663c0a63d3be6789185d6f60a4b4d1e7d207 (diff)
stats: fix memory leakage when adding / deleting interfaces
This fixes two leaks in registering errors in the stats segment. - The error name created by vlib_register_errors() was not freed. - Duplicate error names (when interface readded) was added to the vector. Change-Id: If5fe371e8059cf6678fc785cbf673707b4f4a655 Type: fix Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'src/vlib/error.c')
-rw-r--r--src/vlib/error.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/vlib/error.c b/src/vlib/error.c
index ca5b87c95b9..9bd928c6d0f 100644
--- a/src/vlib/error.c
+++ b/src/vlib/error.c
@@ -140,10 +140,11 @@ VLIB_REGISTER_NODE (misc_drop_buffers_node,static) = {
};
/* *INDENT-ON* */
-void vlib_stats_register_error_index (u8 *, u64 *, u64)
+void vlib_stats_register_error_index (void *, u8 *, u64 *, u64)
__attribute__ ((weak));
void
-vlib_stats_register_error_index (u8 * notused, u64 * notused2, u64 notused3)
+vlib_stats_register_error_index (void *noutused, u8 * notused2,
+ u64 * notused3, u64 notused4)
{
};
@@ -211,7 +212,7 @@ vlib_register_errors (vlib_main_t * vm,
{
error_name = format (0, "/err/%v/%s%c", n->name, error_strings[i], 0);
/* Note: error_name consumed by the following call */
- vlib_stats_register_error_index (error_name, em->counters,
+ vlib_stats_register_error_index (oldheap, error_name, em->counters,
n->error_heap_index + i);
}
}