diff options
Diffstat (limited to 'drivers/usb/storage/scsiglue.c')
-rw-r--r-- | drivers/usb/storage/scsiglue.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c index 1ba19eaa1970..47e56079925d 100644 --- a/drivers/usb/storage/scsiglue.c +++ b/drivers/usb/storage/scsiglue.c | |||
@@ -285,10 +285,15 @@ static int device_reset(struct scsi_cmnd *srb) | |||
285 | 285 | ||
286 | US_DEBUGP("%s called\n", __FUNCTION__); | 286 | US_DEBUGP("%s called\n", __FUNCTION__); |
287 | 287 | ||
288 | /* lock the device pointers and do the reset */ | 288 | result = usb_autopm_get_interface(us->pusb_intf); |
289 | mutex_lock(&(us->dev_mutex)); | 289 | if (result == 0) { |
290 | result = us->transport_reset(us); | 290 | |
291 | mutex_unlock(&us->dev_mutex); | 291 | /* lock the device pointers and do the reset */ |
292 | mutex_lock(&(us->dev_mutex)); | ||
293 | result = us->transport_reset(us); | ||
294 | mutex_unlock(&us->dev_mutex); | ||
295 | usb_autopm_put_interface(us->pusb_intf); | ||
296 | } | ||
292 | 297 | ||
293 | return result < 0 ? FAILED : SUCCESS; | 298 | return result < 0 ? FAILED : SUCCESS; |
294 | } | 299 | } |