ufs: core: fix another deadlock when rtc update
Subsystems (4)
PATCH v2 1/1 ufs: core: fix another deadlock when rtc update
From: Peter Wang <[email protected]>
When ufshcd_rtc_work calls ufshcd_rpm_put_sync and the pm's usage_count is 0, it will enter the runtime suspend callback. However, the runtime suspend callback will wait to flush ufshcd_rtc_work, causing a deadlock.
Replacing ufshcd_rpm_put_sync with ufshcd_rpm_put can avoid the deadlock.
Fixes 6bf999e0eb41 ("scsi: ufs: core: Add UFS RTC support")
Cc <[email protected]> #6.11.x
Signed-off-by Peter Wang <[email protected]>
Reviewed-by Bart Van Assche <[email protected]>
--- drivers/ufs/core/ufshcd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/ufs/core/ufshcd.c +1 -1
@@ -8219,7 +8219,7 @@ static void ufshcd_update_rtc(struct ufs_hba *hba) err =ufshcd_query_attr (hba,UPIU_QUERY_OPCODE_WRITE_ATTR ,QUERY_ATTR_IDN_SECONDS_PASSED ,0 ,0 , &val); -ufshcd_rpm_put_sync (hba); +ufshcd_rpm_put (hba);if (err)dev_err (hba->dev,"%s: Failed to update rtc %d\n" , __func__, err);
Signature · 1 line
2.18.0