summary refs log tree commit diff stats
path: root/hw/core/qdev.c
diff options
context:
space:
mode:
authorPeter Crosthwaite <peter.crosthwaite@xilinx.com>2014-06-18 00:56:31 -0700
committerAndreas Färber <afaerber@suse.de>2014-07-01 04:02:53 +0200
commitf173d57a4cd3bb2a8362fe376cd9fd776b2f57d5 (patch)
treef4b392449f53293e948ec32edbbfc01865bb78ca /hw/core/qdev.c
parentf3c7d0389fe8a2792fd4c1cf151b885de03c8f62 (diff)
downloadfocaccia-qemu-f173d57a4cd3bb2a8362fe376cd9fd776b2f57d5.tar.gz
focaccia-qemu-f173d57a4cd3bb2a8362fe376cd9fd776b2f57d5.zip
irq: Allocate IRQs individually
Allocate each IRQ individually on array allocations. This prepares for
QOMification of IRQs, where pointers to individual IRQs may be taken
and handed around for usage as QOM Links. The g_renew() scheme used here
is too fragile and would break all existing links should an IRQ list
be extended.

We now have to pass the IRQ count to qemu_free_irqs(). We have so few
call sites however, so this change is reasonably trivial.

Cc: agarcia@igalia.com
Cc: mst@redhat.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Alberto Garcia <agarcia@igalia.com>
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
Diffstat (limited to 'hw/core/qdev.c')
-rw-r--r--hw/core/qdev.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index d1eba3cc3d..371b42745e 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -949,7 +949,7 @@ static void device_finalize(Object *obj)
 
     QLIST_FOREACH_SAFE(ngl, &dev->gpios, node, next) {
         QLIST_REMOVE(ngl, node);
-        qemu_free_irqs(ngl->in);
+        qemu_free_irqs(ngl->in, ngl->num_in);
         g_free(ngl->name);
         g_free(ngl);
         /* ngl->out irqs are owned by the other end and should not be freed