diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index ebfbac0f567c..69c71035bf28 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -2436,6 +2436,7 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd) err = ufshcd_send_command(hba, tag); if (err) { + spin_unlock_irqrestore(hba->host->host_lock, flags); scsi_dma_unmap(lrbp->cmd); lrbp->cmd = NULL; clear_bit_unlock(tag, &hba->lrb_in_use); @@ -2443,6 +2444,7 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd) dev_err(hba->dev, "%s: failed sending command, %d\n", __func__, err); err = DID_ERROR; + goto out; } out_unlock: