target: Fix cmd size for PR-OUT in passthrough_parse_cdb
authorTang Wenji <tang.wenji@zte.com.cn>
Sat, 8 Jul 2017 03:15:44 +0000 (11:15 +0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Mon, 10 Jul 2017 03:58:49 +0000 (20:58 -0700)
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>
drivers/target/target_core_device.c
drivers/target/target_core_spc.c

index 1c7c57a..e8dd6da 100644 (file)
@@ -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);
                }
 
index f59ac76..cb0461a 100644 (file)
@@ -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: