Commit da239d1e authored by Peter Wang's avatar Peter Wang Committed by Wentao Guan
Browse files

scsi: ufs: core: Fix another deadlock during RTC update

stable inclusion
from stable-v6.6.81
commit 9aa1f0da237d6b16e36e0a0cc9f746d1d78396ed
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IBYZED

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=9aa1f0da237d6b16e36e0a0cc9f746d1d78396ed



--------------------------------

commit cb7e509c4e0197f63717fee54fb41c4990ba8d3a upstream.

If ufshcd_rtc_work calls ufshcd_rpm_put_sync() and the pm's usage_count
is 0, we will enter the runtime suspend callback.  However, the runtime
suspend callback will wait to flush ufshcd_rtc_work, causing a deadlock.

Replace ufshcd_rpm_put_sync() with ufshcd_rpm_put() to avoid the
deadlock.

Fixes: 6bf999e0eb41 ("scsi: ufs: core: Add UFS RTC support")
Cc: stable@vger.kernel.org #6.11.x
Signed-off-by: default avatarPeter Wang <peter.wang@mediatek.com>
Link: https://lore.kernel.org/r/20241024015453.21684-1-peter.wang@mediatek.com


Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 9aa1f0da237d6b16e36e0a0cc9f746d1d78396ed)
Signed-off-by: default avatarWentao Guan <guanwentao@uniontech.com>
parent 8d86c8f6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -8185,7 +8185,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);