From 7abd25b3b94e4abfeea30e4e4971ba902c3fbd53 Mon Sep 17 00:00:00 2001 From: Ole Troan Date: Fri, 21 Jun 2019 16:07:06 +0200 Subject: 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 --- src/vlib/error.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/vlib') diff --git a/src/vlib/error.c b/src/vlib/error.c index 1a48c9e89c2..17447b07119 100644 --- a/src/vlib/error.c +++ b/src/vlib/error.c @@ -109,10 +109,11 @@ vlib_error_drop_buffers (vlib_main_t * vm, return n_buffers; } -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) { }; @@ -180,7 +181,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); } } -- cgit 1.2.3-korg