]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
scsi: ufs: skip shutdown if hba is not powered
authorStanley Chu <stanley.chu@mediatek.com>
Wed, 18 Sep 2019 04:20:38 +0000 (12:20 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 24 Sep 2019 03:09:42 +0000 (23:09 -0400)
In some cases, hba may go through shutdown flow without successful
initialization and then make system hang.

For example, if ufshcd_change_power_mode() gets error and leads to
ufshcd_hba_exit() to release resources of the host, future shutdown flow
may hang the system since the host register will be accessed in unpowered
state.

To solve this issue, simply add checking to skip shutdown for above kind of
situation.

Link: https://lore.kernel.org/r/1568780438-28753-1-git-send-email-stanley.chu@mediatek.com
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Acked-by: Bean Huo <beanhuo@micron.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c

index c4a015e42045dbe3dd33a61aaf752749974099b9..57b2c3a8def350b1741e16ab7ea2b7c80f8e2bcf 100644 (file)
@@ -8140,6 +8140,9 @@ int ufshcd_shutdown(struct ufs_hba *hba)
 {
        int ret = 0;
 
+       if (!hba->is_powered)
+               goto out;
+
        if (ufshcd_is_ufs_dev_poweroff(hba) && ufshcd_is_link_off(hba))
                goto out;