Message ID | 20220819153931.3147384-7-peter.maydell@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | misc: Remove variable-length arrays on the stack | expand |
On 8/19/22 12:39, Peter Maydell wrote: > From: Philippe Mathieu-Daudé <philmd@redhat.com> > > Use autofree heap allocation instead of variable-length > array on the stack. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > Acked-by: David Gibson <david@gibson.dropbear.id.au> > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com> Feel free to take it via target-arm.next. Thanks, Daniel > --- > hw/ppc/pnv.c | 4 ++-- > hw/ppc/spapr.c | 8 ++++---- > hw/ppc/spapr_pci_nvlink2.c | 2 +- > 3 files changed, 7 insertions(+), 7 deletions(-) > > diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c > index d3f77c83672..dd4101e5b65 100644 > --- a/hw/ppc/pnv.c > +++ b/hw/ppc/pnv.c > @@ -137,7 +137,7 @@ static void pnv_dt_core(PnvChip *chip, PnvCore *pc, void *fdt) > int smt_threads = CPU_CORE(pc)->nr_threads; > CPUPPCState *env = &cpu->env; > PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cs); > - uint32_t servers_prop[smt_threads]; > + g_autofree uint32_t *servers_prop = g_new(uint32_t, smt_threads); > int i; > uint32_t segs[] = {cpu_to_be32(28), cpu_to_be32(40), > 0xffffffff, 0xffffffff}; > @@ -240,7 +240,7 @@ static void pnv_dt_core(PnvChip *chip, PnvCore *pc, void *fdt) > servers_prop[i] = cpu_to_be32(pc->pir + i); > } > _FDT((fdt_setprop(fdt, offset, "ibm,ppc-interrupt-server#s", > - servers_prop, sizeof(servers_prop)))); > + servers_prop, sizeof(*servers_prop) * smt_threads))); > } > > static void pnv_dt_icp(PnvChip *chip, void *fdt, uint32_t pir, > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index bc9ba6e6dcf..28626efd479 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -177,8 +177,8 @@ static int spapr_fixup_cpu_smt_dt(void *fdt, int offset, PowerPCCPU *cpu, > int smt_threads) > { > int i, ret = 0; > - uint32_t servers_prop[smt_threads]; > - uint32_t gservers_prop[smt_threads * 2]; > + g_autofree uint32_t *servers_prop = g_new(uint32_t, smt_threads); > + g_autofree uint32_t *gservers_prop = g_new(uint32_t, smt_threads * 2); > int index = spapr_get_vcpu_id(cpu); > > if (cpu->compat_pvr) { > @@ -196,12 +196,12 @@ static int spapr_fixup_cpu_smt_dt(void *fdt, int offset, PowerPCCPU *cpu, > gservers_prop[i*2 + 1] = 0; > } > ret = fdt_setprop(fdt, offset, "ibm,ppc-interrupt-server#s", > - servers_prop, sizeof(servers_prop)); > + servers_prop, sizeof(*servers_prop) * smt_threads); > if (ret < 0) { > return ret; > } > ret = fdt_setprop(fdt, offset, "ibm,ppc-interrupt-gserver#s", > - gservers_prop, sizeof(gservers_prop)); > + gservers_prop, sizeof(*gservers_prop) * smt_threads * 2); > > return ret; > } > diff --git a/hw/ppc/spapr_pci_nvlink2.c b/hw/ppc/spapr_pci_nvlink2.c > index 63b476c8f72..2a8a11be1d6 100644 > --- a/hw/ppc/spapr_pci_nvlink2.c > +++ b/hw/ppc/spapr_pci_nvlink2.c > @@ -397,7 +397,7 @@ void spapr_phb_nvgpu_populate_pcidev_dt(PCIDevice *dev, void *fdt, int offset, > continue; > } > if (dev == nvslot->gpdev) { > - uint32_t npus[nvslot->linknum]; > + g_autofree uint32_t *npus = g_new(uint32_t, nvslot->linknum); > > for (j = 0; j < nvslot->linknum; ++j) { > PCIDevice *npdev = nvslot->links[j].npdev;
On 8/20/22 01:39, Peter Maydell wrote: > From: Philippe Mathieu-Daudé<philmd@redhat.com> > > Use autofree heap allocation instead of variable-length > array on the stack. > > Signed-off-by: Philippe Mathieu-Daudé<philmd@redhat.com> > Acked-by: David Gibson<david@gibson.dropbear.id.au> > Signed-off-by: Peter Maydell<peter.maydell@linaro.org> > Reviewed-by: Peter Maydell<peter.maydell@linaro.org> > --- > hw/ppc/pnv.c | 4 ++-- > hw/ppc/spapr.c | 8 ++++---- > hw/ppc/spapr_pci_nvlink2.c | 2 +- > 3 files changed, 7 insertions(+), 7 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index d3f77c83672..dd4101e5b65 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -137,7 +137,7 @@ static void pnv_dt_core(PnvChip *chip, PnvCore *pc, void *fdt) int smt_threads = CPU_CORE(pc)->nr_threads; CPUPPCState *env = &cpu->env; PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cs); - uint32_t servers_prop[smt_threads]; + g_autofree uint32_t *servers_prop = g_new(uint32_t, smt_threads); int i; uint32_t segs[] = {cpu_to_be32(28), cpu_to_be32(40), 0xffffffff, 0xffffffff}; @@ -240,7 +240,7 @@ static void pnv_dt_core(PnvChip *chip, PnvCore *pc, void *fdt) servers_prop[i] = cpu_to_be32(pc->pir + i); } _FDT((fdt_setprop(fdt, offset, "ibm,ppc-interrupt-server#s", - servers_prop, sizeof(servers_prop)))); + servers_prop, sizeof(*servers_prop) * smt_threads))); } static void pnv_dt_icp(PnvChip *chip, void *fdt, uint32_t pir, diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index bc9ba6e6dcf..28626efd479 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -177,8 +177,8 @@ static int spapr_fixup_cpu_smt_dt(void *fdt, int offset, PowerPCCPU *cpu, int smt_threads) { int i, ret = 0; - uint32_t servers_prop[smt_threads]; - uint32_t gservers_prop[smt_threads * 2]; + g_autofree uint32_t *servers_prop = g_new(uint32_t, smt_threads); + g_autofree uint32_t *gservers_prop = g_new(uint32_t, smt_threads * 2); int index = spapr_get_vcpu_id(cpu); if (cpu->compat_pvr) { @@ -196,12 +196,12 @@ static int spapr_fixup_cpu_smt_dt(void *fdt, int offset, PowerPCCPU *cpu, gservers_prop[i*2 + 1] = 0; } ret = fdt_setprop(fdt, offset, "ibm,ppc-interrupt-server#s", - servers_prop, sizeof(servers_prop)); + servers_prop, sizeof(*servers_prop) * smt_threads); if (ret < 0) { return ret; } ret = fdt_setprop(fdt, offset, "ibm,ppc-interrupt-gserver#s", - gservers_prop, sizeof(gservers_prop)); + gservers_prop, sizeof(*gservers_prop) * smt_threads * 2); return ret; } diff --git a/hw/ppc/spapr_pci_nvlink2.c b/hw/ppc/spapr_pci_nvlink2.c index 63b476c8f72..2a8a11be1d6 100644 --- a/hw/ppc/spapr_pci_nvlink2.c +++ b/hw/ppc/spapr_pci_nvlink2.c @@ -397,7 +397,7 @@ void spapr_phb_nvgpu_populate_pcidev_dt(PCIDevice *dev, void *fdt, int offset, continue; } if (dev == nvslot->gpdev) { - uint32_t npus[nvslot->linknum]; + g_autofree uint32_t *npus = g_new(uint32_t, nvslot->linknum); for (j = 0; j < nvslot->linknum; ++j) { PCIDevice *npdev = nvslot->links[j].npdev;