From dab88520d6ef96a5546d79ef1f12843df3cdf71a Mon Sep 17 00:00:00 2001 From: "K. Y. Srinivasan" Date: Thu, 1 Dec 2011 09:59:34 -0800 Subject: [PATCH] --- yaml --- r: 280055 b: refs/heads/master c: cf6a2eacbcb2593b5b91d0817915c4f0464bb534 h: refs/heads/master i: 280053: 9353d036c1ab399583c41eecbb684f330691ea6d 280051: 4871bebbcb2338d1819c98d9f3926090d2c1df9b 280047: 58f4abaeeda4dabb405e6f086188d9026865a59b v: v3 --- [refs] | 2 +- trunk/drivers/hv/vmbus_drv.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 298c685eb9eb..78ab8920bfc6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d2554f50df9be3c53a13f7541a5f4d054bd56cc3 +refs/heads/master: cf6a2eacbcb2593b5b91d0817915c4f0464bb534 diff --git a/trunk/drivers/hv/vmbus_drv.c b/trunk/drivers/hv/vmbus_drv.c index 7d3bccb3b2a5..40956d1c6608 100644 --- a/trunk/drivers/hv/vmbus_drv.c +++ b/trunk/drivers/hv/vmbus_drv.c @@ -62,6 +62,14 @@ struct hv_device_info { struct hv_dev_port_info outbound; }; +static int vmbus_exists(void) +{ + if (hv_acpi_dev == NULL) + return -ENODEV; + + return 0; +} + static void get_channel_info(struct hv_device *device, struct hv_device_info *info) @@ -590,6 +598,10 @@ int __vmbus_driver_register(struct hv_driver *hv_driver, struct module *owner, c pr_info("registering driver %s\n", hv_driver->name); + ret = vmbus_exists(); + if (ret < 0) + return ret; + hv_driver->driver.name = hv_driver->name; hv_driver->driver.owner = owner; hv_driver->driver.mod_name = mod_name; @@ -614,6 +626,9 @@ void vmbus_driver_unregister(struct hv_driver *hv_driver) { pr_info("unregistering driver %s\n", hv_driver->name); + if (!vmbus_exists()) + return; + driver_unregister(&hv_driver->driver); } @@ -776,6 +791,7 @@ static int __init hv_acpi_init(void) cleanup: acpi_bus_unregister_driver(&vmbus_acpi_driver); + hv_acpi_dev = NULL; return ret; }