* [PATCH v3] xl: free bitmaps on exit
@ 2018-11-28 12:24 Olaf Hering
2018-11-28 12:31 ` Wei Liu
0 siblings, 1 reply; 2+ messages in thread
From: Olaf Hering @ 2018-11-28 12:24 UTC (permalink / raw)
To: xen-devel; +Cc: Wei Liu, Olaf Hering, Ian Jackson
Every invocation of xl via valgrind will show three leaks.
Since libxl_bitmap_alloc uses NOGC, the caller has to free the memory
after use. And since xl_ctx_free might be called before
parse_global_config, also move the libxl_bitmap_init calls into
xl_ctx_alloc.
Also move the call to atexit() after xl_ctx_alloc, because the latter is
also called again in postfork.
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
tools/xl/xl.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/tools/xl/xl.c b/tools/xl/xl.c
index 7d2142f16f..ddd29b3f1b 100644
--- a/tools/xl/xl.c
+++ b/tools/xl/xl.c
@@ -209,11 +209,8 @@ static void parse_global_config(const char *configfile,
if (!xlu_cfg_get_long (config, "max_maptrack_frames", &l, 0))
max_maptrack_frames = l;
- libxl_bitmap_init(&global_vm_affinity_mask);
libxl_cpu_bitmap_alloc(ctx, &global_vm_affinity_mask, 0);
- libxl_bitmap_init(&global_hvm_affinity_mask);
libxl_cpu_bitmap_alloc(ctx, &global_hvm_affinity_mask, 0);
- libxl_bitmap_init(&global_pv_affinity_mask);
libxl_cpu_bitmap_alloc(ctx, &global_pv_affinity_mask, 0);
if (!xlu_cfg_get_string (config, "vm.cpumask", &buf, 0))
@@ -323,11 +320,17 @@ void xl_ctx_alloc(void) {
exit(1);
}
+ libxl_bitmap_init(&global_vm_affinity_mask);
+ libxl_bitmap_init(&global_hvm_affinity_mask);
+ libxl_bitmap_init(&global_pv_affinity_mask);
libxl_childproc_setmode(ctx, &childproc_hooks, 0);
}
static void xl_ctx_free(void)
{
+ libxl_bitmap_dispose(&global_pv_affinity_mask);
+ libxl_bitmap_dispose(&global_hvm_affinity_mask);
+ libxl_bitmap_dispose(&global_vm_affinity_mask);
if (ctx) {
libxl_ctx_free(ctx);
ctx = NULL;
@@ -383,10 +386,10 @@ int main(int argc, char **argv)
(progress_use_cr ? XTL_STDIOSTREAM_PROGRESS_USE_CR : 0));
if (!logger) exit(EXIT_FAILURE);
- atexit(xl_ctx_free);
-
xl_ctx_alloc();
+ atexit(xl_ctx_free);
+
ret = libxl_read_file_contents(ctx, XL_GLOBAL_CONFIG,
&config_data, &config_len);
if (ret)
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v3] xl: free bitmaps on exit
2018-11-28 12:24 [PATCH v3] xl: free bitmaps on exit Olaf Hering
@ 2018-11-28 12:31 ` Wei Liu
0 siblings, 0 replies; 2+ messages in thread
From: Wei Liu @ 2018-11-28 12:31 UTC (permalink / raw)
To: Olaf Hering; +Cc: xen-devel, Ian Jackson, Wei Liu
On Wed, Nov 28, 2018 at 01:24:34PM +0100, Olaf Hering wrote:
> Every invocation of xl via valgrind will show three leaks.
> Since libxl_bitmap_alloc uses NOGC, the caller has to free the memory
> after use. And since xl_ctx_free might be called before
> parse_global_config, also move the libxl_bitmap_init calls into
> xl_ctx_alloc.
>
> Also move the call to atexit() after xl_ctx_alloc, because the latter is
> also called again in postfork.
>
> Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Wei Liu <wei.liu2@citrix.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-11-28 12:32 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-28 12:24 [PATCH v3] xl: free bitmaps on exit Olaf Hering
2018-11-28 12:31 ` Wei Liu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.