Ming Lei 6280db912e scsi: core: Don't start concurrent async scan on same host
[ Upstream commit 831e3405c2a344018a18fcc2665acc5a38c3a707 ]

The current scanning mechanism is supposed to fall back to a synchronous
host scan if an asynchronous scan is in progress. However, this rule isn't
strictly respected, scsi_prep_async_scan() doesn't hold scan_mutex when
checking shost->async_scan. When scsi_scan_host() is called concurrently,
two async scans on same host can be started and a hang in do_scan_async()
is observed.

Fixes this issue by checking & setting shost->async_scan atomically with
shost->scan_mutex.

Link: https://lore.kernel.org/r/20201010032539.426615-1-ming.lei@redhat.com
Cc: Christoph Hellwig <hch@lst.de>
Cc: Ewan D. Milne <emilne@redhat.com>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Lee Duncan <lduncan@suse.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-11-10 12:35:59 +01:00
..
2019-02-12 19:47:25 +01:00
2020-10-01 13:14:26 +02:00
2018-08-21 23:54:17 -04:00
2017-12-04 20:32:53 -05:00
2018-06-19 22:02:25 -04:00
2018-06-19 22:02:25 -04:00
2018-06-19 22:02:25 -04:00
2018-06-12 16:19:22 -07:00
2018-05-18 12:03:51 -04:00
2018-06-19 22:02:25 -04:00
2018-06-19 22:02:25 -04:00
2017-08-25 17:21:10 -04:00
2019-12-01 09:16:26 +01:00
2018-08-15 22:06:26 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2017-11-14 16:23:44 -08:00
2018-08-15 22:06:26 -07:00
2018-06-10 13:01:12 -07:00
2018-06-04 07:58:06 -07:00
2018-06-19 22:02:25 -04:00
2018-08-15 22:06:26 -07:00
2018-06-12 16:19:22 -07:00
2018-05-01 23:30:12 -04:00