Re: Incorrect uses of get_driver()/put_driver()

From: Alan Stern
Date: Tue Jan 10 2012 - 15:32:52 EST


On Tue, 10 Jan 2012, Sebastian Ott wrote:

> [PATCH] cio: remove {get,put}_driver
>
> Remove useless {get,put}_driver - the caller of the functions
> has to ensure valid driver pointers.
>
> Signed-off-by: Sebastian Ott <sebott@xxxxxxxxxxxxxxxxxx>
> ---
> drivers/s390/cio/ccwgroup.c | 2 --
> drivers/s390/cio/device.c | 8 +-------
> 2 files changed, 1 insertion(+), 9 deletions(-)
>
> --- a/drivers/s390/cio/ccwgroup.c
> +++ b/drivers/s390/cio/ccwgroup.c
> @@ -580,7 +580,6 @@ void ccwgroup_driver_unregister(struct c
> struct device *dev;
>
> /* We don't want ccwgroup devices to live longer than their driver. */
> - get_driver(&cdriver->driver);
> while ((dev = driver_find_device(&cdriver->driver, NULL, NULL,
> __ccwgroup_match_all))) {
> struct ccwgroup_device *gdev = to_ccwgroupdev(dev);
> @@ -592,7 +591,6 @@ void ccwgroup_driver_unregister(struct c
> mutex_unlock(&gdev->reg_mutex);
> put_device(dev);
> }
> - put_driver(&cdriver->driver);
> driver_unregister(&cdriver->driver);
> }
> EXPORT_SYMBOL(ccwgroup_driver_unregister);
> --- a/drivers/s390/cio/device.c
> +++ b/drivers/s390/cio/device.c
> @@ -1676,15 +1676,9 @@ struct ccw_device *get_ccwdev_by_busid(s
> const char *bus_id)
> {
> struct device *dev;
> - struct device_driver *drv;
>
> - drv = get_driver(&cdrv->driver);
> - if (!drv)
> - return NULL;
> -
> - dev = driver_find_device(drv, NULL, (void *)bus_id,
> + dev = driver_find_device(&cdrv->driver, NULL, (void *)bus_id,
> __ccwdev_check_busid);
> - put_driver(drv);
>
> return dev ? to_ccwdev(dev) : NULL;
> }

Thanks Sebastian and everybody else. It looks like there's no reason
not to simply remove get_driver() and put_driver(), so I'll do just
that. This patch can be part of the job -- unless someone else wants
to commit it first.

To avoid possible conflicts, I'll wait until after the merge window
closes and things stabilize a little before posting any changes.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/