From: Andrew Cooper Date: Mon, 24 Sep 2018 13:00:02 +0000 (+0100) Subject: ARM/dom0: Avoid using a variable length array in make_memory_node() X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=cd8015b634b005a3911bd6025351cd854d63a82a;p=people%2Fandrewcoop%2Fxen.git ARM/dom0: Avoid using a variable length array in make_memory_node() The reg[] array can have a maximum size of 8 in practice, so use the worst case calculation rather than making it variable length. Signed-off-by: Andrew Cooper Reviewed-by: Julien Grall --- diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 38e0de3b03..ac8d4799f3 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -539,9 +539,11 @@ static int __init make_memory_node(const struct domain *d, int res, i; int reg_size = addrcells + sizecells; int nr_cells = reg_size*kinfo->mem.nr_banks; - __be32 reg[nr_cells]; + __be32 reg[NR_MEM_BANKS * 4 /* Worst case addrcells + sizecells */]; __be32 *cells; + BUG_ON(nr_cells >= ARRAY_SIZE(reg)); + dt_dprintk("Create memory node (reg size %d, nr cells %d)\n", reg_size, nr_cells);