Re: [PATCH v2] usb: uas: fix a plug & unplug racing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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>




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux