From 92e3082199d10add866894e86a9762d79a3536c4 Mon Sep 17 00:00:00 2001 From: Ole Troan Date: Sun, 16 Jun 2019 12:33:51 +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. This fix also adds memory usage statistics for the statistics segment as /mem/statseg/{used, total} Change-Id: Ife98d5fc5baef5bdae426a5a1eef428af2b9ab8a Type: fix Signed-off-by: Ole Troan --- src/vppinfra/mem_dlmalloc.c | 15 +++++++++++++++ src/vppinfra/mheap.h | 1 + 2 files changed, 16 insertions(+) (limited to 'src/vppinfra') diff --git a/src/vppinfra/mem_dlmalloc.c b/src/vppinfra/mem_dlmalloc.c index 99f1c04f3eb..7a53a8bb43b 100644 --- a/src/vppinfra/mem_dlmalloc.c +++ b/src/vppinfra/mem_dlmalloc.c @@ -383,6 +383,21 @@ clib_mem_usage (clib_mem_usage_t * u) clib_warning ("unimp"); } +void +mheap_usage (void *heap, clib_mem_usage_t * usage) +{ + struct dlmallinfo mi = mspace_mallinfo (heap); + + /* TODO: Fill in some more values */ + usage->object_count = 0; + usage->bytes_total = mi.arena; + usage->bytes_overhead = 0; + usage->bytes_max = 0; + usage->bytes_used = mi.uordblks; + usage->bytes_free = mi.fordblks; + usage->bytes_free_reclaimed = 0; +} + /* Call serial number for debugger breakpoints. */ uword clib_mem_validate_serial = 0; diff --git a/src/vppinfra/mheap.h b/src/vppinfra/mheap.h index afc2bf485b5..61d262c5f33 100644 --- a/src/vppinfra/mheap.h +++ b/src/vppinfra/mheap.h @@ -90,6 +90,7 @@ int test_mheap_main (unformat_input_t * input); /* Format mheap data structures as string. */ u8 *format_mheap (u8 * s, va_list * va); void *mheap_alloc_with_lock (void *memory, uword size, int locked); +void mheap_usage (void *v, clib_mem_usage_t * usage); #endif /* USE_DLMALLOC */ -- cgit 1.2.3-korg