Skip to content

Commit

Permalink
Staging: hv: vmbus: Fix a bug in error handling in vmbus_bus_init()
Browse files Browse the repository at this point in the history
Fix a bug in error handling in vmbus_bus_init().

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
K. Y. Srinivasan authored and Greg Kroah-Hartman committed Sep 6, 2011
1 parent d531bab commit 8b9987e
Showing 1 changed file with 15 additions and 11 deletions.
26 changes: 15 additions & 11 deletions drivers/staging/hv/vmbus_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -492,18 +492,15 @@ static int vmbus_bus_init(int irq)

ret = bus_register(&hv_bus);
if (ret)
return ret;
goto err_cleanup;

ret = request_irq(irq, vmbus_isr, IRQF_SAMPLE_RANDOM,
driver_name, hv_acpi_dev);

if (ret != 0) {
pr_err("Unable to request IRQ %d\n",
irq);

bus_unregister(&hv_bus);

return ret;
goto err_unregister;
}

vector = IRQ0_VECTOR + irq;
Expand All @@ -514,16 +511,23 @@ static int vmbus_bus_init(int irq)
*/
on_each_cpu(hv_synic_init, (void *)&vector, 1);
ret = vmbus_connect();
if (ret) {
free_irq(irq, hv_acpi_dev);
bus_unregister(&hv_bus);
return ret;
}

if (ret)
goto err_irq;

vmbus_request_offers();

return 0;

err_irq:
free_irq(irq, hv_acpi_dev);

err_unregister:
bus_unregister(&hv_bus);

err_cleanup:
hv_cleanup();

return ret;
}

/**
Expand Down

0 comments on commit 8b9987e

Please sign in to comment.