summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-06-08 05:13:55 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-06-08 05:13:54 -0700
commit8df469526a103f51d3e6136f5f2faba2bea33192 (patch)
tree74ac63adc0dc851c984516e78a5b3e904ac8ec3a /drivers
parentc6e845ffe7e57781b351fb14697334165bcdec01 (diff)
parent04147f52cce7768e45c2fa16e96f93c34b787168 (diff)
Merge "scsi: ufs: Avoid dead lock during error recovery"
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/ufs/ufshcd.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index a90c51a113d2..b8dc7e834cf3 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -3285,8 +3285,10 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba,
/*
* May get invoked from shutdown and IOCTL contexts.
* In shutdown context, it comes in with lock acquired.
+ * In error recovery context, it may come with lock acquired.
*/
- if (!ufshcd_is_shutdown_ongoing(hba))
+
+ if (!ufshcd_is_shutdown_ongoing(hba) && !ufshcd_eh_in_progress(hba))
down_read(&hba->lock);
/*
@@ -3320,7 +3322,7 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba,
out_put_tag:
ufshcd_put_dev_cmd_tag(hba, tag);
wake_up(&hba->dev_cmd.tag_wq);
- if (!ufshcd_is_shutdown_ongoing(hba))
+ if (!ufshcd_is_shutdown_ongoing(hba) && !ufshcd_eh_in_progress(hba))
up_read(&hba->lock);
return err;
}