]> Pileus Git - ~andy/linux/blobdiff - drivers/hv/vmbus_drv.c
drivers: hv: allocate synic structures before hv_synic_init()
[~andy/linux] / drivers / hv / vmbus_drv.c
index 4004e54ef05dab7c32330df8f268c1f4e3f5aff7..a2464bf07c49b03342c0dfcd79852cc0a232a703 100644 (file)
@@ -563,6 +563,9 @@ static int vmbus_bus_init(int irq)
         */
        hv_register_vmbus_handler(irq, vmbus_isr);
 
+       ret = hv_synic_alloc();
+       if (ret)
+               goto err_alloc;
        /*
         * Initialize the per-cpu interrupt state and
         * connect to the host.
@@ -570,13 +573,14 @@ static int vmbus_bus_init(int irq)
        on_each_cpu(hv_synic_init, NULL, 1);
        ret = vmbus_connect();
        if (ret)
-               goto err_irq;
+               goto err_alloc;
 
        vmbus_request_offers();
 
        return 0;
 
-err_irq:
+err_alloc:
+       hv_synic_free();
        free_irq(irq, hv_acpi_dev);
 
 err_unregister: