summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorChaohai Chen <wdhh6@aliyun.com>2026-03-05 05:51:24 +0300
committerMartin K. Petersen <martin.petersen@oracle.com>2026-03-07 18:58:33 +0300
commit7a3aff163c77159d262217382ec0e9c06c847b46 (patch)
tree51955c6258877d18fc01c54f13b2c40d8b092c70 /include
parent1bf5c303eb9898930c5313769df14a76c51075c1 (diff)
downloadlinux-7a3aff163c77159d262217382ec0e9c06c847b46.tar.xz
scsi: core: Drop using the host_lock to protect async_scan race condition
Previously, host_lock was used to prevent bit-set conflicts in async_scan, but this approach introduced naked reads in some code paths. Convert async_scan from a bitfield to a bool type to eliminate bit-level conflicts entirely. Use __guarded_by(&scan_mutex) to indicate that the async_scan variable is protected by scan_mutex. Signed-off-by: Chaohai Chen <wdhh6@aliyun.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: John Garry <john.g.garry@oracle.com> Link: https://patch.msgid.link/20260305025125.3649517-1-wdhh6@aliyun.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'include')
-rw-r--r--include/scsi/scsi_host.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h
index f6e12565a81d..7e2011830ba4 100644
--- a/include/scsi/scsi_host.h
+++ b/include/scsi/scsi_host.h
@@ -660,6 +660,10 @@ struct Scsi_Host {
*/
unsigned nr_hw_queues;
unsigned nr_maps;
+
+ /* Asynchronous scan in progress */
+ bool async_scan __guarded_by(&scan_mutex);
+
unsigned active_mode:2;
/*
@@ -678,9 +682,6 @@ struct Scsi_Host {
/* Task mgmt function in progress */
unsigned tmf_in_progress:1;
- /* Asynchronous scan in progress */
- unsigned async_scan:1;
-
/* Don't resume host in EH */
unsigned eh_noresume:1;