|
@@ -1076,20 +1076,19 @@ static int uas_post_reset(struct usb_interface *intf)
|
|
|
return 0;
|
|
|
|
|
|
err = uas_configure_endpoints(devinfo);
|
|
|
- if (err) {
|
|
|
+ if (err && err != ENODEV)
|
|
|
shost_printk(KERN_ERR, shost,
|
|
|
"%s: alloc streams error %d after reset",
|
|
|
__func__, err);
|
|
|
- return 1;
|
|
|
- }
|
|
|
|
|
|
+ /* we must unblock the host in every case lest we deadlock */
|
|
|
spin_lock_irqsave(shost->host_lock, flags);
|
|
|
scsi_report_bus_reset(shost, 0);
|
|
|
spin_unlock_irqrestore(shost->host_lock, flags);
|
|
|
|
|
|
scsi_unblock_requests(shost);
|
|
|
|
|
|
- return 0;
|
|
|
+ return err ? 1 : 0;
|
|
|
}
|
|
|
|
|
|
static int uas_suspend(struct usb_interface *intf, pm_message_t message)
|