Commit 54fbbb30d44e ("i8259.c: introduce TYPE_I8259_PIC device") introduced a
separate output IRQ for a PIC representing a cascaded i8259 configuration, but
failed to free it afterwards. Use qemu_init_irq_child() so that the IRQ is
automatically freed when the PIC device is finalized.

Reported-by: Peter Maydell <[email protected]>
Fixes: 54fbbb30d44e ("i8259.c: introduce TYPE_I8259_PIC device")
Signed-off-by: Mark Cave-Ayland <[email protected]>
---
 hw/intc/i8259.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/intc/i8259.c b/hw/intc/i8259.c
index 79b5e603bc..6c784ef2a4 100644
--- a/hw/intc/i8259.c
+++ b/hw/intc/i8259.c
@@ -491,7 +491,8 @@ static void i8259_pic_init(Object *obj)
     object_initialize_child(obj, "primary", &s->i8259[0], TYPE_I8259);
     object_initialize_child(obj, "secondary", &s->i8259[1], TYPE_I8259);
 
-    qemu_init_irq(&s->i8259_primary_out_irq, i8259_primary_out_irq, s, 1);
+    qemu_init_irq_child(obj, "output-irq", &s->i8259_primary_out_irq,
+                        i8259_primary_out_irq, s, 1);
 
     qdev_init_gpio_in(DEVICE(obj), i8259_pic_set_irq, ISA_NUM_IRQS);
     qdev_init_gpio_out(DEVICE(obj), &s->pic_out_irq, 1);
-- 
2.43.0


Reply via email to