From: Paul Durrant <pdurr...@amazon.com> Currently an array of 1024 xc_domaininfo_t is declared on stack. That alone consumes ~112k. Since libxl_domain_info() creates a new gc this patch simply uses it to allocate the array instead.
Signed-off-by: Paul Durrant <pdurr...@amazon.com> --- Cc: Ian Jackson <ian.jack...@eu.citrix.com> Cc: Wei Liu <w...@xen.org> Cc: Anthony PERARD <anthony.per...@citrix.com> This is small and IMO it would be nice to have this in 4.14 but I'd like an opinion from a maintainer too. --- tools/libxl/libxl_domain.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/libxl/libxl_domain.c b/tools/libxl/libxl_domain.c index fef2cd4e13..c07ec8fd3a 100644 --- a/tools/libxl/libxl_domain.c +++ b/tools/libxl/libxl_domain.c @@ -314,11 +314,13 @@ libxl_dominfo * libxl_list_domain(libxl_ctx *ctx, int *nb_domain_out) { libxl_dominfo *ptr = NULL; int i, ret; - xc_domaininfo_t info[1024]; + xc_domaininfo_t *info; int size = 0; uint32_t domid = 0; GC_INIT(ctx); + info = libxl__calloc(gc, 1024, sizeof(*info)); + while ((ret = xc_domain_getinfolist(ctx->xch, domid, 1024, info)) > 0) { ptr = libxl__realloc(NOGC, ptr, (size + ret) * sizeof(libxl_dominfo)); for (i = 0; i < ret; i++) { -- 2.17.1