ASAN spotted an indirect leak in ahci-test:
Indirect leak of 576 byte(s) in 6 object(s) allocated from:
#0 0x556112a08ca0 in malloc
#1 0x7f21591e595d in g_malloc
#2 0x7f21591ffe38 in g_slice_alloc
#3 0x7f21591c988d in g_hash_table_new_full
#4 0x556114d756f1 in object_initialize_with_type ../qom/object.c:506:23
#5 0x556114d77590 in object_new_with_type ../qom/object.c:706:5
#6 0x556114d777e8 in object_new ../qom/object.c:722:12
#7 0x556114d6d2be in qemu_allocate_irq ../hw/core/irq.c:94:25
#8 0x556114d6d1bc in qemu_extend_irqs ../hw/core/irq.c:82:16
#9 0x556114d6d329 in qemu_allocate_irqs ../hw/core/irq.c:89:12
#10 0x5561135da9bd in ahci_realize ../hw/ide/ahci.c:1644:12
#11 0x55611360156a in pci_ich9_ahci_realize ../hw/ide/ich.c:132:5
Although ahci_realize() frees the return of qemu_allocate_irqs() right
away, the individual IRQStates are still left around.
Issue qemu_free_irq() at ahci_uninit().
Reviewed-by: Denis V. Lunev <[email protected]>
Signed-off-by: Fabiano Rosas <[email protected]>
---
hw/ide/ahci.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index 6b04762c4a..86f6297dc9 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -1688,6 +1688,7 @@ void ahci_uninit(AHCIState *s)
}
ide_exit(ide_state);
}
+ qemu_free_irq(ad->port.irq);
object_unparent(OBJECT(&ad->port));
}
--
2.53.0