Am Dienstag, den 21.01.2020, 23:43 -0800 schrieb EJ Hsu: > When a uas disk is plugged into an external hub, uas_probe() > will be called by the hub thread to do the probe. It will > first create a SCSI host and then do the scan for this host. > During the scan, it will probe the LUN using SCSI INQUERY command > which will be packed in the URB and submitted to uas disk. > > There might be a chance that this external hub with uas disk > attached is unplugged during the scan. In this case, uas driver > will fail to submit the URB (due to the NOTATTACHED state of uas > device) and try to put this SCSI command back to request queue > waiting for next chance to run. > > In normal case, this cycle will terminate when hub thread gets > disconnection event and calls into uas_disconnect() accordingly. > But in this case, uas_disconnect() will not be called because > hub thread of external hub gets stuck waiting for the completion > of this SCSI command. A deadlock happened. > > In this fix, uas will call scsi_scan_host() asynchronously to > avoid the blocking of hub thread. > > Signed-off-by: EJ Hsu <ejh@xxxxxxxxxx> Acked-by: Oliver Neukum <oneukum@xxxxxxxx>