Message ID | 20210505211047.1496765-12-philmd@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | misc: Remove variable-length arrays on the stack | expand |
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é <philmd@redhat.com> Acked-by: David Gibson <david@gibson.dropbear.id.au> > --- > 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;
On Wed, 5 May 2021 23:10:35 +0200 Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > Use autofree heap allocation instead of variable-length > array on the stack. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > 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 <groug@kaod.org> > int i; > - uint8_t flags[ics->nr_irqs]; > > for (i = 0; i < ics->nr_irqs; i++) { > flags[i] = ics->irqs[i].flags;
On 5/6/21 10:22 AM, Greg Kurz wrote: > On Wed, 5 May 2021 23:10:35 +0200 > Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > >> Use autofree heap allocation instead of variable-length >> array on the stack. >> >> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> >> --- >> 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 <groug@kaod.org> Thanks!
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;
Use autofree heap allocation instead of variable-length array on the stack. Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- hw/intc/xics.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)