scsi: ufs: core: Add missing host_lock in ufshcd_vops_setup_xfer_req()
authorJaegeuk Kim <jaegeuk@kernel.org>
Thu, 1 Jul 2021 00:51:17 +0000 (17:51 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 13 Jul 2021 02:02:06 +0000 (22:02 -0400)
This patch adds a host_lock which existed before on
ufshcd_vops_setup_xfer_req().

Link: https://lore.kernel.org/r/20210701005117.3846179-1-jaegeuk@kernel.org
Fixes: a45f937110fa ("scsi: ufs: Optimize host lock on transfer requests send/compl paths")
Cc: Stanley Chu <stanley.chu@mediatek.com>
Cc: Can Guo <cang@codeaurora.org>
Cc: Bean Huo <beanhuo@micron.com>
Cc: Bart Van Assche <bvanassche@acm.org>
Cc: Asutosh Das <asutoshd@codeaurora.org>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.h

index c98d540..194755c 100644 (file)
@@ -1229,8 +1229,13 @@ static inline int ufshcd_vops_pwr_change_notify(struct ufs_hba *hba,
 static inline void ufshcd_vops_setup_xfer_req(struct ufs_hba *hba, int tag,
                                        bool is_scsi_cmd)
 {
-       if (hba->vops && hba->vops->setup_xfer_req)
-               return hba->vops->setup_xfer_req(hba, tag, is_scsi_cmd);
+       if (hba->vops && hba->vops->setup_xfer_req) {
+               unsigned long flags;
+
+               spin_lock_irqsave(hba->host->host_lock, flags);
+               hba->vops->setup_xfer_req(hba, tag, is_scsi_cmd);
+               spin_unlock_irqrestore(hba->host->host_lock, flags);
+       }
 }
 
 static inline void ufshcd_vops_setup_task_mgmt(struct ufs_hba *hba,