summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ufs
diff options
context:
space:
mode:
authorCan Guo <cang@codeaurora.org>2019-12-05 02:14:33 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-06-07 13:17:54 +0200
commit01aeb332006e1f1d9cc32ab519c1e843a23172cf (patch)
tree04e61c3034fffe3ef6d8a8453985f4d26157864a /drivers/scsi/ufs
parent2aabc12bf2d6ba3e0b39a91222e575a791b5282b (diff)
downloadlinux-stable-01aeb332006e1f1d9cc32ab519c1e843a23172cf.tar.gz
linux-stable-01aeb332006e1f1d9cc32ab519c1e843a23172cf.tar.bz2
linux-stable-01aeb332006e1f1d9cc32ab519c1e843a23172cf.zip
scsi: ufs: Release clock if DMA map fails
commit 17c7d35f141ef6158076adf3338f115f64fcf760 upstream. In queuecommand path, if DMA map fails, it bails out with clock held. In this case, release the clock to keep its usage paired. [mkp: applied by hand] Link: https://lore.kernel.org/r/0101016ed3d66395-1b7e7fce-b74d-42ca-a88a-4db78b795d3b-000000@us-west-2.amazonses.com Reviewed-by: Bean Huo <beanhuo@micron.com> Signed-off-by: Can Guo <cang@codeaurora.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> [EB: resolved cherry-pick conflict caused by newer kernels not having the clear_bit_unlock() line] Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/scsi/ufs')
-rw-r--r--drivers/scsi/ufs/ufshcd.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index d91209ba18c8..803d67b3a166 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -2505,6 +2505,7 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
err = ufshcd_map_sg(hba, lrbp);
if (err) {
+ ufshcd_release(hba);
lrbp->cmd = NULL;
clear_bit_unlock(tag, &hba->lrb_in_use);
goto out;