scsi: ufs: flush eh_work when eh_work scheduled.
authorZang Leigang <zangleigang@hisilicon.com>
Sat, 24 Jun 2017 11:14:32 +0000 (19:14 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 1 Jul 2017 20:51:23 +0000 (16:51 -0400)
Forget a condition: eh_work scheduled but do not start to work.

Signed-off-by: Zang Leigang <zangleigang@hisilicon.com>
Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c

index 88ccd63..5bc9dc1 100644 (file)
@@ -5809,7 +5809,8 @@ static int ufshcd_eh_host_reset_handler(struct scsi_cmnd *cmd)
        do {
                spin_lock_irqsave(hba->host->host_lock, flags);
                if (!(work_pending(&hba->eh_work) ||
-                               hba->ufshcd_state == UFSHCD_STATE_RESET))
+                           hba->ufshcd_state == UFSHCD_STATE_RESET ||
+                           hba->ufshcd_state == UFSHCD_STATE_EH_SCHEDULED))
                        break;
                spin_unlock_irqrestore(hba->host->host_lock, flags);
                dev_dbg(hba->dev, "%s: reset in progress\n", __func__);