|
@@ -1570,16 +1570,15 @@ EXPORT_SYMBOL(scsi_add_device);
|
|
|
|
|
|
void scsi_rescan_device(struct device *dev)
|
|
void scsi_rescan_device(struct device *dev)
|
|
{
|
|
{
|
|
- if (!dev->driver)
|
|
|
|
- return;
|
|
|
|
-
|
|
|
|
- if (try_module_get(dev->driver->owner)) {
|
|
|
|
|
|
+ device_lock(dev);
|
|
|
|
+ if (dev->driver && try_module_get(dev->driver->owner)) {
|
|
struct scsi_driver *drv = to_scsi_driver(dev->driver);
|
|
struct scsi_driver *drv = to_scsi_driver(dev->driver);
|
|
|
|
|
|
if (drv->rescan)
|
|
if (drv->rescan)
|
|
drv->rescan(dev);
|
|
drv->rescan(dev);
|
|
module_put(dev->driver->owner);
|
|
module_put(dev->driver->owner);
|
|
}
|
|
}
|
|
|
|
+ device_unlock(dev);
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(scsi_rescan_device);
|
|
EXPORT_SYMBOL(scsi_rescan_device);
|
|
|
|
|