]> rtime.felk.cvut.cz Git - jailhouse.git/commitdiff
x86: Properly roll back failing IOAPIC cell initialization
authorJan Kiszka <jan.kiszka@siemens.com>
Thu, 7 Jan 2016 07:54:17 +0000 (08:54 +0100)
committerJan Kiszka <jan.kiszka@siemens.com>
Fri, 8 Jan 2016 18:34:38 +0000 (19:34 +0100)
We have to release already allocated resources if ioapic_get_or_add_phys
fails. At least the arch.ioapics array should be freed again, but
possibly also previously claimed root cell IOAPIC pins.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
hypervisor/arch/x86/ioapic.c

index 61dd2b4165d2777ebb40765053d41501ba19cc72..82521fba94e87e3237d7fd4f5a21373c0a206b13 100644 (file)
@@ -349,8 +349,10 @@ int ioapic_cell_init(struct cell *cell)
 
        for (n = 0; n < cell->config->num_irqchips; n++, irqchip++) {
                phys_ioapic = ioapic_get_or_add_phys(irqchip);
-               if (!phys_ioapic)
+               if (!phys_ioapic) {
+                       ioapic_cell_exit(cell);
                        return -ENOMEM;
+               }
 
                ioapic = &cell->arch.ioapics[n];
                ioapic->info = irqchip;