Blob Blame History Raw
From: Tang Wenji <tang.wenji@zte.com.cn>
Date: Sat, 8 Jul 2017 11:15:44 +0800
Subject: target: Fix cmd size for PR-OUT in passthrough_parse_cdb
Git-commit: 388fe6996bf658146e70c0df986981eae4be0385
Patch-mainline: v4.13-rc1
References: fate#323946

The cmd size should be 4bytes form byte5 to byte8 when CDB opcode
is PERSISTENT_RESERVE_OUT in SPC3 and SPC4

(Also fix up the same in spc_parse_cdb - MNC)

Signed-off-by: Tang Wenji <tang.wenji@zte.com.cn>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Acked-by: Lee Duncan <lduncan@suse.com>
---
 drivers/target/target_core_device.c | 2 +-
 drivers/target/target_core_spc.c    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
index 1c7c57a3c52e..e8dd6da164b2 100644
--- a/drivers/target/target_core_device.c
+++ b/drivers/target/target_core_device.c
@@ -1183,7 +1183,7 @@ void core_dev_release_virtual_lun0(void)
 		}
 		if (cdb[0] == PERSISTENT_RESERVE_OUT) {
 			cmd->execute_cmd = target_scsi3_emulate_pr_out;
-			size = get_unaligned_be16(&cdb[7]);
+			size = get_unaligned_be32(&cdb[5]);
 			return target_cmd_size_check(cmd, size);
 		}
 
diff --git a/drivers/target/target_core_spc.c b/drivers/target/target_core_spc.c
index f59ac7671031..cb0461a10808 100644
--- a/drivers/target/target_core_spc.c
+++ b/drivers/target/target_core_spc.c
@@ -1307,7 +1307,7 @@ sense_reason_t spc_emulate_report_luns(struct se_cmd *cmd)
 		cmd->execute_cmd = target_scsi3_emulate_pr_in;
 		break;
 	case PERSISTENT_RESERVE_OUT:
-		*size = get_unaligned_be16(&cdb[7]);
+		*size = get_unaligned_be32(&cdb[5]);
 		cmd->execute_cmd = target_scsi3_emulate_pr_out;
 		break;
 	case RELEASE: