Skip to content

Commit

Permalink
Staging: hv: netvsc_drv: Clean up the netvsc_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 netvsc_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 96053ef commit a881fdd
Showing 1 changed file with 1 addition and 33 deletions.
34 changes: 1 addition & 33 deletions drivers/staging/hv/netvsc_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -428,15 +428,6 @@ static int netvsc_remove(struct hv_device *dev)
return ret;
}

static int netvsc_drv_exit_cb(struct device *dev, void *data)
{
struct device **curr = (struct device **)data;

*curr = dev;
/* stop iterating */
return 1;
}

/* The one and only one */
static struct netvsc_driver netvsc_drv = {
.base.probe = netvsc_probe,
Expand All @@ -445,30 +436,7 @@ static struct netvsc_driver netvsc_drv = {

static void netvsc_drv_exit(void)
{
struct hv_driver *drv = &netvsc_drv.base;
struct device *current_dev;
int ret;

while (1) {
current_dev = NULL;

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

if (current_dev == NULL)
break;

/* Initiate removal from the top-down */
dev_err(current_dev, "unregistering device (%s)...\n",
dev_name(current_dev));

device_unregister(current_dev);
}

vmbus_child_driver_unregister(&drv->driver);

return;
vmbus_child_driver_unregister(&netvsc_drv.base.driver);
}

static int netvsc_drv_init(int (*drv_init)(struct hv_driver *drv))
Expand Down

0 comments on commit a881fdd

Please sign in to comment.