scsi: hisi_sas: Fix memory ordering in hisi_sas_task_deliver()
The memories for the slot should be observed to be written prior to observing the slot as ready. Prior to commit26fc0ea74f
("scsi: libsas: Drop SAS_TASK_AT_INITIATOR"), we had a spin_lock() + spin_unlock() immediately before marking the slot as ready. The spin_unlock() - with release semantics - caused the slot memory to be observed to be written. Now that the spin_lock() + spin_unlock() is gone, use a smp_wmb(). Link: https://lore.kernel.org/r/1652774661-12935-1-git-send-email-john.garry@huawei.com Fixes:26fc0ea74f
("scsi: libsas: Drop SAS_TASK_AT_INITIATOR") Reported-by: Yihang Li <liyihang6@hisilicon.com> Tested-by: Yihang Li <liyihang6@hisilicon.com> Signed-off-by: John Garry <john.garry@huawei.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Родитель
b559b99a5c
Коммит
6c6ac8b777
|
@ -446,6 +446,8 @@ void hisi_sas_task_deliver(struct hisi_hba *hisi_hba,
|
|||
return;
|
||||
}
|
||||
|
||||
/* Make slot memories observable before marking as ready */
|
||||
smp_wmb();
|
||||
WRITE_ONCE(slot->ready, 1);
|
||||
|
||||
spin_lock(&dq->lock);
|
||||
|
|
Загрузка…
Ссылка в новой задаче