Skip to content

Commit

Permalink
Staging: hv: blkvsc_drv: Cleanup the blkvsc_drv_exit() function
Browse files Browse the repository at this point in the history
To conform to the Linux device model, the device should persist even
when there is no driver bound to it. Cleanup the blkvsc_drv_exit() routine
keeping this in mind.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Abhishek Kane <v-abkane@microsoft.com>
Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
K. Y. Srinivasan authored and Greg Kroah-Hartman committed May 17, 2011
1 parent 459bce9 commit 8553d75
Showing 1 changed file with 1 addition and 32 deletions.
33 changes: 1 addition & 32 deletions drivers/staging/hv/blkvsc_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -833,42 +833,11 @@ static int blkvsc_drv_init(void)
return ret;
}

static int blkvsc_drv_exit_cb(struct device *dev, void *data)
{
struct device **curr = (struct device **)data;
*curr = dev;
return 1; /* stop iterating */
}

static void blkvsc_drv_exit(void)
{
struct hv_driver *drv = &blkvsc_drv;
struct device *current_dev;
int ret;

while (1) {
current_dev = NULL;

/* Get the device */
ret = driver_for_each_device(&drv->driver, NULL,
(void *) &current_dev,
blkvsc_drv_exit_cb);

if (ret)
DPRINT_WARN(BLKVSC_DRV,
"driver_for_each_device returned %d", ret);


if (current_dev == NULL)
break;

/* Initiate removal from the top-down */
device_unregister(current_dev);
}

vmbus_child_driver_unregister(&drv->driver);

return;
vmbus_child_driver_unregister(&blkvsc_drv.driver);
}

/*
Expand Down

0 comments on commit 8553d75

Please sign in to comment.