From 44db4847179624816ff2795096f7293dcd750b8f Mon Sep 17 00:00:00 2001 From: Can Guo Date: Wed, 8 Jul 2020 10:44:49 +0800 Subject: [PATCH] ufs: ufs-qcom: Fix racing caused by ufs_qcom_testbus_config() If func ufs_qcom_testbus_config() is invoked from ufshcd_suspend/resume and/or clk gate/ungate context, pm_runtime_get_sync() and ufshcd_hold() will flush the contexts calling ufs_qcom_testbus_config(), causing racing problems. Fix it by removing the unnecessary calls of pm_runtime_get_sync() and ufshcd_hold(). Change-Id: Iada1e777de0cafaf8c9b972fcace65399ea9668d Signed-off-by: Can Guo --- drivers/scsi/ufs/ufs-qcom.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c index 5c18c9efba11..e29db94d7578 100644 --- a/drivers/scsi/ufs/ufs-qcom.c +++ b/drivers/scsi/ufs/ufs-qcom.c @@ -3015,8 +3015,6 @@ int ufs_qcom_testbus_config(struct ufs_qcom_host *host) mask <<= offset; spin_unlock_irqrestore(hba->host->host_lock, flags); - pm_runtime_get_sync(host->hba->dev); - ufshcd_hold(host->hba, false); ufshcd_rmwl(host->hba, TEST_BUS_SEL, (u32)host->testbus.select_major << 19, REG_UFS_CFG1); @@ -3029,8 +3027,6 @@ int ufs_qcom_testbus_config(struct ufs_qcom_host *host) * committed before returning. */ mb(); - ufshcd_release(host->hba); - pm_runtime_put_sync(host->hba->dev); return 0; }