Re: [PATCH 11/23] hw/intc/xics: Avoid dynamic stack allocation
On 5/6/21 10:22 AM, Greg Kurz wrote: > On Wed, 5 May 2021 23:10:35 +0200 > Philippe Mathieu-Daudé wrote: > >> Use autofree heap allocation instead of variable-length >> array on the stack. >> >> Signed-off-by: Philippe Mathieu-Daudé >> --- >> hw/intc/xics.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> +g_autofree uint8_t *flags = g_malloc(ics->nr_irqs); > > I would have made it g_new(uint8_t, ics->nr_irqs) so that changes > in the type of 'flags' that could potentially change the allocated > size are safely detected. OK, will update. > This is unlikely though, so: > > Reviewed-by: Greg Kurz Thanks!
Re: [PATCH 11/23] hw/intc/xics: Avoid dynamic stack allocation
On Wed, 5 May 2021 23:10:35 +0200 Philippe Mathieu-Daudé wrote: > Use autofree heap allocation instead of variable-length > array on the stack. > > Signed-off-by: Philippe Mathieu-Daudé > --- > hw/intc/xics.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/intc/xics.c b/hw/intc/xics.c > index 68f9d44feb4..c293d00d5c4 100644 > --- a/hw/intc/xics.c > +++ b/hw/intc/xics.c > @@ -566,8 +566,8 @@ static void ics_reset_irq(ICSIRQState *irq) > static void ics_reset(DeviceState *dev) > { > ICSState *ics = ICS(dev); > +g_autofree uint8_t *flags = g_malloc(ics->nr_irqs); I would have made it g_new(uint8_t, ics->nr_irqs) so that changes in the type of 'flags' that could potentially change the allocated size are safely detected. This is unlikely though, so: Reviewed-by: Greg Kurz > int i; > -uint8_t flags[ics->nr_irqs]; > > for (i = 0; i < ics->nr_irqs; i++) { > flags[i] = ics->irqs[i].flags;
Re: [PATCH 11/23] hw/intc/xics: Avoid dynamic stack allocation
On Wed, May 05, 2021 at 11:10:35PM +0200, Philippe Mathieu-Daudé wrote: > Use autofree heap allocation instead of variable-length > array on the stack. > > Signed-off-by: Philippe Mathieu-Daudé Acked-by: David Gibson > --- > hw/intc/xics.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/intc/xics.c b/hw/intc/xics.c > index 68f9d44feb4..c293d00d5c4 100644 > --- a/hw/intc/xics.c > +++ b/hw/intc/xics.c > @@ -566,8 +566,8 @@ static void ics_reset_irq(ICSIRQState *irq) > static void ics_reset(DeviceState *dev) > { > ICSState *ics = ICS(dev); > +g_autofree uint8_t *flags = g_malloc(ics->nr_irqs); > int i; > -uint8_t flags[ics->nr_irqs]; > > for (i = 0; i < ics->nr_irqs; i++) { > flags[i] = ics->irqs[i].flags; -- David Gibson| I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson signature.asc Description: PGP signature
[PATCH 11/23] hw/intc/xics: Avoid dynamic stack allocation
Use autofree heap allocation instead of variable-length array on the stack. Signed-off-by: Philippe Mathieu-Daudé --- hw/intc/xics.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/intc/xics.c b/hw/intc/xics.c index 68f9d44feb4..c293d00d5c4 100644 --- a/hw/intc/xics.c +++ b/hw/intc/xics.c @@ -566,8 +566,8 @@ static void ics_reset_irq(ICSIRQState *irq) static void ics_reset(DeviceState *dev) { ICSState *ics = ICS(dev); +g_autofree uint8_t *flags = g_malloc(ics->nr_irqs); int i; -uint8_t flags[ics->nr_irqs]; for (i = 0; i < ics->nr_irqs; i++) { flags[i] = ics->irqs[i].flags; -- 2.26.3