Staging: hv: fix sparse static warnings
[deliverable/linux.git] / drivers / staging / hv / vmbus_drv.c
index a86e4043d174ef4da36c8c108d66b02b157dda17..375dde94eb16e7b5f4fc9d2ebbc52c38e2637ddf 100644 (file)
@@ -75,11 +75,11 @@ static irqreturn_t vmbus_isr(int irq, void* dev_id);
 static void vmbus_device_release(struct device *device);
 static void vmbus_bus_release(struct device *device);
 
-static DEVICE_OBJECT* vmbus_child_device_create(GUID type, GUID instance, void* context);
-static void vmbus_child_device_destroy(DEVICE_OBJECT* device_obj);
-static int vmbus_child_device_register(DEVICE_OBJECT* root_device_obj, DEVICE_OBJECT* child_device_obj);
-static void vmbus_child_device_unregister(DEVICE_OBJECT* child_device_obj);
-static void vmbus_child_device_get_info(DEVICE_OBJECT *device_obj, DEVICE_INFO *device_info);
+static struct hv_device *vmbus_child_device_create(GUID type, GUID instance, void* context);
+static void vmbus_child_device_destroy(struct hv_device *device_obj);
+static int vmbus_child_device_register(struct hv_device *root_device_obj, struct hv_device *child_device_obj);
+static void vmbus_child_device_unregister(struct hv_device *child_device_obj);
+static void vmbus_child_device_get_info(struct hv_device *device_obj, DEVICE_INFO *device_info);
 
 /* static ssize_t vmbus_show_class_id(struct device *dev, struct device_attribute *attr, char *buf); */
 /* static ssize_t vmbus_show_device_id(struct device *dev, struct device_attribute *attr, char *buf); */
@@ -101,34 +101,6 @@ static int vmbus_irq = VMBUS_IRQ;
 
 /* Setup /proc/sys/bus/vmbus/vmbus_loglevel */
 /* Allow usage of sysctl cmd to set the logging level */
-static struct ctl_table_header *vmbus_ctl_table_hdr;
-
-static ctl_table vmbus_dev_ctl_table[] = {
-       { .ctl_name     = 8461,
-         .procname     = "vmbus_loglevel",
-         .data         = &vmbus_loglevel,
-         .maxlen       = sizeof(vmbus_loglevel),
-         .mode         = 0644,
-         .proc_handler = &proc_dointvec },
-       { }
-};
-
-static ctl_table vmbus_ctl_table[] = {
-       { .ctl_name     = CTL_DEV,
-         .procname     = "vmbus",
-         .mode         = 0555,
-         .child        = vmbus_dev_ctl_table },
-       { }
-};
-
-static ctl_table vmus_root_ctl_table[] = {
-       { .ctl_name     = CTL_BUS,
-         .procname     = "bus",
-         .mode         = 0555,
-         .child        = vmbus_ctl_table },
-       { }
-};
-
 
 /* Set up per device attributes in /sys/bus/vmbus/devices/<bus device> */
 
@@ -339,7 +311,7 @@ Desc:       Main vmbus driver initialization routine. Here, we
                - setup the vmbus root device
                - retrieve the channel offers
 --*/
-int vmbus_bus_init(PFN_DRIVERINITIALIZE pfn_drv_init)
+static int vmbus_bus_init(PFN_DRIVERINITIALIZE pfn_drv_init)
 {
        int ret=0;
        unsigned int vector=0;
@@ -380,7 +352,12 @@ int vmbus_bus_init(PFN_DRIVERINITIALIZE pfn_drv_init)
        tasklet_init(&vmbus_drv_ctx->event_dpc, vmbus_event_dpc, (unsigned long)vmbus_drv_obj);
 
        /* Now, register the bus driver with LDM */
-       bus_register(&vmbus_drv_ctx->bus);
+       ret = bus_register(&vmbus_drv_ctx->bus);
+       if (ret)
+       {
+               ret = -1;
+               goto cleanup;
+       }
 
        /* Get the interrupt resource */
        ret = request_irq(vmbus_irq,
@@ -430,7 +407,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();
 
@@ -448,7 +436,7 @@ Name:       vmbus_bus_exit()
 Desc:  Terminate the vmbus driver. This routine is opposite of vmbus_bus_init()
 
 --*/
-void vmbus_bus_exit(void)
+static void vmbus_bus_exit(void)
 {
        VMBUS_DRIVER_OBJECT *vmbus_drv_obj=&g_vmbus_drv.drv_obj;
        struct vmbus_driver_context *vmbus_drv_ctx=&g_vmbus_drv;
@@ -486,9 +474,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);
 
@@ -497,11 +486,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);
@@ -551,7 +542,7 @@ Name:       vmbus_child_device_get_info()
 
 Desc:  Get the vmbus child device info. This is invoked to display various device attributes in sysfs.
 --*/
-static void vmbus_child_device_get_info(DEVICE_OBJECT *device_obj, DEVICE_INFO *device_info)
+static void vmbus_child_device_get_info(struct hv_device *device_obj, DEVICE_INFO *device_info)
 {
        VMBUS_DRIVER_OBJECT *vmbus_drv_obj=&g_vmbus_drv.drv_obj;
 
@@ -566,10 +557,10 @@ Name:     vmbus_child_device_create()
 Desc:  Creates and registers a new child device on the vmbus.
 
 --*/
-static DEVICE_OBJECT* vmbus_child_device_create(GUID type, GUID instance, void* context)
+static struct hv_device *vmbus_child_device_create(GUID type, GUID instance, void* context)
 {
        struct device_context *child_device_ctx;
-       DEVICE_OBJECT* child_device_obj;
+       struct hv_device *child_device_obj;
 
        DPRINT_ENTER(VMBUS_DRV);
 
@@ -610,7 +601,7 @@ Name:       vmbus_child_device_register()
 Desc:  Register the child device on the specified bus
 
 --*/
-static int vmbus_child_device_register(DEVICE_OBJECT* root_device_obj, DEVICE_OBJECT* child_device_obj)
+static int vmbus_child_device_register(struct hv_device *root_device_obj, struct hv_device *child_device_obj)
 {
        int ret=0;
        struct device_context *root_device_ctx = to_device_context(root_device_obj);
@@ -647,7 +638,7 @@ static int vmbus_child_device_register(DEVICE_OBJECT* root_device_obj, DEVICE_OB
        ret = child_device_ctx->probe_error;
 
        if (ret)
-               DPRINT_ERR(VMBUS_DRV, "unable to register child device (%p) (%d)", &child_device_ctx->device);
+               DPRINT_ERR(VMBUS_DRV, "unable to register child device (%p)", &child_device_ctx->device);
        else
                DPRINT_INFO(VMBUS_DRV, "child device (%p) registered", &child_device_ctx->device);
 
@@ -664,7 +655,7 @@ Name:       vmbus_child_device_unregister()
 Desc:  Remove the specified child device from the vmbus.
 
 --*/
-static void vmbus_child_device_unregister(DEVICE_OBJECT* device_obj)
+static void vmbus_child_device_unregister(struct hv_device *device_obj)
 {
        struct device_context *device_ctx = to_device_context(device_obj);
 
@@ -689,7 +680,7 @@ Name:       vmbus_child_device_destroy()
 Desc:  Destroy the specified child device on the vmbus.
 
 --*/
-static void vmbus_child_device_destroy(DEVICE_OBJECT* device_obj)
+static void vmbus_child_device_destroy(struct hv_device *device_obj)
 {
        DPRINT_ENTER(VMBUS_DRV);
 
@@ -774,7 +765,7 @@ static int vmbus_match(struct device *device, struct device_driver *driver)
        if (memcmp(&device_ctx->class_id, &driver_ctx->class_id, sizeof(GUID)) == 0)
        {
                /* !! NOTE: The driver_ctx is not a vmbus_drv_ctx. We typecast it here to access the */
-               /* DRIVER_OBJECT field */
+               /* struct hv_driver field */
                struct vmbus_driver_context *vmbus_drv_ctx = (struct vmbus_driver_context*)driver_ctx;
                device_ctx->device_obj.Driver = &vmbus_drv_ctx->drv_obj.Base;
                DPRINT_INFO(VMBUS_DRV, "device object (%p) set to driver object (%p)", &device_ctx->device_obj, device_ctx->device_obj.Driver);
This page took 0.030406 seconds and 5 git commands to generate.