summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTang Wenji <tang.wenji@zte.com.cn>2017-07-08 11:15:44 +0800
committerNicholas Bellinger <nab@linux-iscsi.org>2017-07-09 20:58:49 -0700
commit388fe6996bf658146e70c0df986981eae4be0385 (patch)
tree8b0c999ac9c82a61254d47802903442b9ae4f99d
parentde8c5221aa003935d6d31becf5850b247dff14a1 (diff)
downloadlinux-388fe6996bf658146e70c0df986981eae4be0385.tar.bz2
target: Fix cmd size for PR-OUT in passthrough_parse_cdb
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>
-rw-r--r--drivers/target/target_core_device.c2
-rw-r--r--drivers/target/target_core_spc.c2
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 @@ passthrough_parse_cdb(struct se_cmd *cmd,
}
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 @@ spc_parse_cdb(struct se_cmd *cmd, unsigned int *size)
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: