]> rtime.felk.cvut.cz Git - jailhouse.git/commitdiff
pci: refactor error path of pci_cell_init()
authorHenning Schild <henning.schild@siemens.com>
Mon, 24 Nov 2014 17:54:14 +0000 (18:54 +0100)
committerJan Kiszka <jan.kiszka@siemens.com>
Wed, 26 Nov 2014 18:21:55 +0000 (19:21 +0100)
Signed-off-by: Henning Schild <henning.schild@siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
hypervisor/pci.c

index 489579c8849dafb4bcefee0765c7681fdfd2bb0f..497800e41e3caf05289aac4fe49066f5c7d370ad 100644 (file)
@@ -636,8 +636,8 @@ int pci_cell_init(struct cell *cell)
         */
        for (ndev = 0; ndev < cell->config->num_pci_devices; ndev++) {
                if (dev_infos[ndev].num_msix_vectors > PCI_MAX_MSIX_VECTORS) {
-                       pci_cell_exit(cell);
-                       return -ERANGE;
+                       err = -ERANGE;
+                       goto error;
                }
 
                device = &cell->pci_devices[ndev];
@@ -651,10 +651,8 @@ int pci_cell_init(struct cell *cell)
                }
 
                err = pci_add_device(cell, device);
-               if (err) {
-                       pci_cell_exit(cell);
-                       return err;
-               }
+               if (err)
+                       goto error;
 
                device->cell = cell;
 
@@ -669,6 +667,9 @@ int pci_cell_init(struct cell *cell)
                pci_prepare_handover();
 
        return 0;
+error:
+       pci_cell_exit(cell);
+       return err;
 }
 
 static void pci_return_device_to_root_cell(struct pci_device *device)