From: Nicholas Bellinger Date: Tue, 14 Apr 2015 18:55:01 +0000 (-0700) Subject: target/sbc: Return INVALID_CDB_FIELD if DIF + sess_prot_type disabled X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=cceca4a638708c7f62e60f9f99684a8d57358dd0;p=sagit-ice-cold%2Fkernel_xiaomi_msm8998.git target/sbc: Return INVALID_CDB_FIELD if DIF + sess_prot_type disabled In sbc_check_prot(), if PROTECT is non-zero for a backend device with DIF disabled, and sess_prot_type is not set go ahead and return INVALID_CDB_FIELD. Reviewed-by: Martin Petersen Reviewed-by: Sagi Grimberg Signed-off-by: Nicholas Bellinger --- diff --git a/drivers/target/target_core_sbc.c b/drivers/target/target_core_sbc.c index 0064ffe9a219..7006c95586e3 100644 --- a/drivers/target/target_core_sbc.c +++ b/drivers/target/target_core_sbc.c @@ -702,9 +702,13 @@ sbc_check_prot(struct se_device *dev, struct se_cmd *cmd, unsigned char *cdb, pi_prot_type = cmd->se_sess->sess_prot_type; break; } + if (!protect) + return TCM_NO_SENSE; /* Fallthrough */ default: - return TCM_NO_SENSE; + pr_err("Unable to determine pi_prot_type for CDB: 0x%02x " + "PROTECT: 0x%02x\n", cdb[0], protect); + return TCM_INVALID_CDB_FIELD; } if (sbc_set_prot_op_checks(protect, fabric_prot, pi_prot_type, is_write, cmd))