From: Shannon Zhao <shannon.z...@linaro.org> valgrind complains about: ==6366== 4,936 (256 direct, 4,680 indirect) bytes in 1 blocks are definitely lost in loss record 3,245 of 3,271 ==6366== at 0x4C2845D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==6366== by 0x336F47: malloc_and_trace (vl.c:2556) ==6366== by 0x64C770E: g_malloc (in /usr/lib64/libglib-2.0.so.0.3600.3) ==6366== by 0x3C093B: qemu_extend_irqs (irq.c:55) ==6366== by 0x3C09C7: qemu_allocate_irqs (irq.c:64) ==6366== by 0x265091: ppcuic_init (ppc4xx_devs.c:317) ==6366== by 0x26A90A: bamboo_init (ppc440_bamboo.c:205) ==6366== by 0x33B312: main (vl.c:4249)
Signed-off-by: Shannon Zhao <zhaoshengl...@huawei.com> Signed-off-by: Shannon Zhao <shannon.z...@linaro.org> --- hw/ppc/ppc440_bamboo.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 778970a..23b091f 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -235,13 +235,28 @@ static void bamboo_init(MachineState *machine) serial_mm_init(address_space_mem, 0xef600300, 0, pic[0], PPC_SERIAL_MM_BAUDBASE, serial_hds[0], DEVICE_BIG_ENDIAN); + } else { + qemu_free_irq(pic[0]); } if (serial_hds[1] != NULL) { serial_mm_init(address_space_mem, 0xef600400, 0, pic[1], PPC_SERIAL_MM_BAUDBASE, serial_hds[1], DEVICE_BIG_ENDIAN); + } else { + qemu_free_irq(pic[1]); } + for (i = 2; i < 14; i++) { + qemu_free_irq(pic[i]); + } + for (i = 15; i < 25; i++) { + qemu_free_irq(pic[i]); + } + for (i = 29; i < 32; i++) { + qemu_free_irq(pic[i]); + } + g_free(pic); + if (pcibus) { /* Register network interfaces. */ for (i = 0; i < nb_nics; i++) { -- 2.0.4