mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-18 00:24:39 +00:00
uas: Fix reset locking
Fix the uas_eh_bus_reset_handler not properly taking the usbdev lock before calling usb_device_reset, the usb-core expects this lock to be taken when usb_device_reset is called. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
This commit is contained in:
parent
6c2334e901
commit
be326f4c9b
1 changed files with 9 additions and 0 deletions
|
@ -804,6 +804,13 @@ static int uas_eh_bus_reset_handler(struct scsi_cmnd *cmnd)
|
|||
struct usb_device *udev = devinfo->udev;
|
||||
int err;
|
||||
|
||||
err = usb_lock_device_for_reset(udev, devinfo->intf);
|
||||
if (err) {
|
||||
shost_printk(KERN_ERR, sdev->host,
|
||||
"%s FAILED to get lock err %d\n", __func__, err);
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
shost_printk(KERN_INFO, sdev->host, "%s start\n", __func__);
|
||||
devinfo->resetting = 1;
|
||||
uas_abort_work(devinfo);
|
||||
|
@ -817,6 +824,8 @@ static int uas_eh_bus_reset_handler(struct scsi_cmnd *cmnd)
|
|||
uas_configure_endpoints(devinfo);
|
||||
devinfo->resetting = 0;
|
||||
|
||||
usb_unlock_device(udev);
|
||||
|
||||
if (err) {
|
||||
shost_printk(KERN_INFO, sdev->host, "%s FAILED\n", __func__);
|
||||
return FAILED;
|
||||
|
|
Loading…
Reference in a new issue