]> git.baikalelectronics.ru Git - kernel.git/commit
scsi: ufs: Fix race between shutdown and runtime resume flow
authorStanley Chu <stanley.chu@mediatek.com>
Thu, 19 Nov 2020 06:29:16 +0000 (14:29 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 20 Nov 2020 03:18:36 +0000 (22:18 -0500)
commit5823e2a9fe659789caf89b79009b4aa8e67d5f5e
treea9874702b7f0cb6e6d1b5a8a6165a3b385c499be
parentdb844405b024871187198c42ba2ef93fb289f267
scsi: ufs: Fix race between shutdown and runtime resume flow

If UFS host device is in runtime-suspended state while UFS shutdown
callback is invoked, UFS device shall be resumed for register
accesses. Currently only UFS local runtime resume function will be invoked
to wake up the host.  This is not enough because if someone triggers
runtime resume from block layer, then race may happen between shutdown and
runtime resume flow, and finally lead to unlocked register access.

To fix this, in ufshcd_shutdown(), use pm_runtime_get_sync() instead of
resuming UFS device by ufshcd_runtime_resume() "internally" to let runtime
PM framework manage the whole resume flow.

Link: https://lore.kernel.org/r/20201119062916.12931-1-stanley.chu@mediatek.com
Fixes: 061f506550a6 ("ufs: add UFS power management support")
Reviewed-by: Can Guo <cang@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c