aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorBill Pemberton <wfp5p@virginia.edu>2009-07-27 16:47:36 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-09-15 12:01:51 -0700
commit5d48a1c20268871395299672dce5c1989c9c94e4 (patch)
tree04db3e5b2a5dadcf3e6bf083de81d00f71ed7f52 /drivers
parentc19fbca307c19bd0d49e86b9417613c90eb9de95 (diff)
Staging: hv: check return value of device_register()
Signed-off-by: Bill Pemberton <wfp5p@virginia.edu> Cc: Hank Janssen <hjanssen@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/hv/blkvsc_drv.c2
-rw-r--r--drivers/staging/hv/include/vmbus.h3
-rw-r--r--drivers/staging/hv/netvsc_drv.c2
-rw-r--r--drivers/staging/hv/storvsc_drv.c2
-rw-r--r--drivers/staging/hv/vmbus_drv.c20
5 files changed, 21 insertions, 8 deletions
diff --git a/drivers/staging/hv/blkvsc_drv.c b/drivers/staging/hv/blkvsc_drv.c
index 5322e570bd8..f1efc3e65c1 100644
--- a/drivers/staging/hv/blkvsc_drv.c
+++ b/drivers/staging/hv/blkvsc_drv.c
@@ -192,7 +192,7 @@ int blkvsc_drv_init(PFN_DRIVERINITIALIZE pfn_drv_init)
drv_ctx->shutdown = blkvsc_shutdown;
/* The driver belongs to vmbus */
- vmbus_child_driver_register(drv_ctx);
+ ret = vmbus_child_driver_register(drv_ctx);
DPRINT_EXIT(BLKVSC_DRV);
diff --git a/drivers/staging/hv/include/vmbus.h b/drivers/staging/hv/include/vmbus.h
index 463f77ef3cd..c1a8c553eda 100644
--- a/drivers/staging/hv/include/vmbus.h
+++ b/drivers/staging/hv/include/vmbus.h
@@ -82,8 +82,7 @@ static inline struct driver_context *driver_to_driver_context(struct device_driv
/* Vmbus interface */
-void
-vmbus_child_driver_register(
+int vmbus_child_driver_register(
struct driver_context* driver_ctx
);
diff --git a/drivers/staging/hv/netvsc_drv.c b/drivers/staging/hv/netvsc_drv.c
index 8cf552a33e5..82f77008b9b 100644
--- a/drivers/staging/hv/netvsc_drv.c
+++ b/drivers/staging/hv/netvsc_drv.c
@@ -114,7 +114,7 @@ int netvsc_drv_init(PFN_DRIVERINITIALIZE pfn_drv_init)
drv_ctx->remove = netvsc_remove;
/* The driver belongs to vmbus */
- vmbus_child_driver_register(drv_ctx);
+ ret = vmbus_child_driver_register(drv_ctx);
DPRINT_EXIT(NETVSC_DRV);
diff --git a/drivers/staging/hv/storvsc_drv.c b/drivers/staging/hv/storvsc_drv.c
index 3c677f015c4..cbea8a2f054 100644
--- a/drivers/staging/hv/storvsc_drv.c
+++ b/drivers/staging/hv/storvsc_drv.c
@@ -162,7 +162,7 @@ int storvsc_drv_init(PFN_DRIVERINITIALIZE pfn_drv_init)
drv_ctx->remove = storvsc_remove;
/* The driver belongs to vmbus */
- vmbus_child_driver_register(drv_ctx);
+ ret = vmbus_child_driver_register(drv_ctx);
DPRINT_EXIT(STORVSC_DRV);
diff --git a/drivers/staging/hv/vmbus_drv.c b/drivers/staging/hv/vmbus_drv.c
index cede0ace9ad..fd6f18e148d 100644
--- a/drivers/staging/hv/vmbus_drv.c
+++ b/drivers/staging/hv/vmbus_drv.c
@@ -435,7 +435,18 @@ int vmbus_bus_init(PFN_DRIVERINITIALIZE pfn_drv_init)
dev_ctx->device.release = vmbus_bus_release;
/* Setup the bus as root device */
- device_register(&dev_ctx->device);
+ ret = device_register(&dev_ctx->device);
+ if (ret)
+ {
+ DPRINT_ERR(VMBUS_DRV, "ERROR - Unable to register vmbus root device");
+
+ free_irq(vmbus_irq, NULL);
+ bus_unregister(&vmbus_drv_ctx->bus);
+
+ ret = -1;
+ goto cleanup;
+ }
+
vmbus_drv_obj->GetChannelOffers();
@@ -491,9 +502,10 @@ Name: vmbus_child_driver_register()
Desc: Register a vmbus's child driver
--*/
-void vmbus_child_driver_register(struct driver_context* driver_ctx)
+int vmbus_child_driver_register(struct driver_context* driver_ctx)
{
VMBUS_DRIVER_OBJECT *vmbus_drv_obj=&g_vmbus_drv.drv_obj;
+ int ret;
DPRINT_ENTER(VMBUS_DRV);
@@ -502,11 +514,13 @@ void vmbus_child_driver_register(struct driver_context* driver_ctx)
/* The child driver on this vmbus */
driver_ctx->driver.bus = &g_vmbus_drv.bus;
- driver_register(&driver_ctx->driver);
+ ret = driver_register(&driver_ctx->driver);
vmbus_drv_obj->GetChannelOffers();
DPRINT_EXIT(VMBUS_DRV);
+
+ return ret;
}
EXPORT_SYMBOL(vmbus_child_driver_register);