From 6a317b49c98c6f15c3606943d183c93005879844 Mon Sep 17 00:00:00 2001
From: Randall Huang <huangrandall@google.com>
Date: Fri, 8 Jun 2018 00:10:13 +0800
Subject: [PATCH] scsi: ufs: revise commit ecd2676bd513 ("disallow
 SECURITY_PROTOCOL_IN without _OUT")

Original commit causes unnecessary request retries
when the userspace app sends consecutive SECURITY_PROTOCOL_IN requests.

Bug: 79898356
Bug: 109850759
Change-Id: Ie8e539e770bb97fa575aa8bdb5715dfe189882e5
Signed-off-by: Randall Huang <huangrandall@google.com>
---
 drivers/scsi/ufs/ufshcd.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 1e506c4a980e..818176d17d13 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -3209,7 +3209,13 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
 		ufshcd_vops_crypto_engine_cfg_end(hba, lrbp, cmd->request);
 		dev_err(hba->dev, "%s: failed sending command, %d\n",
 							__func__, err);
-		err = DID_ERROR;
+		if (err == -EINVAL) {
+			set_host_byte(cmd, DID_ERROR);
+			if (has_read_lock)
+				ufshcd_put_read_lock(hba);
+			cmd->scsi_done(cmd);
+			return 0;
+		}
 		goto out;
 	}
 
-- 
GitLab