Re: [PATCH 3/3] target: Fix parameter list length checking in MODE SELECT

2013-02-13 Thread Nicholas A. Bellinger
On Fri, 2013-02-08 at 15:18 -0800, Roland Dreier wrote:
 From: Roland Dreier rol...@purestorage.com
 
 An empty parameter list (length == 0) is not an error, so succeed MODE
 SELECT in this case.  If the parameter list length is too small,
 return the correct sense code of PARAMETER LIST LENGTH ERROR.
 
 Signed-off-by: Roland Dreier rol...@purestorage.com
 ---

Applied.

Thanks Roland!

--nab

  drivers/target/target_core_spc.c | 13 +
  1 file changed, 13 insertions(+)
 
 diff --git a/drivers/target/target_core_spc.c 
 b/drivers/target/target_core_spc.c
 index 2d88f08..73c5d53 100644
 --- a/drivers/target/target_core_spc.c
 +++ b/drivers/target/target_core_spc.c
 @@ -983,6 +983,14 @@ static sense_reason_t spc_emulate_modeselect(struct 
 se_cmd *cmd)
   int ret = 0;
   int i;
  
 + if (!cmd-data_length) {
 + target_complete_cmd(cmd, GOOD);
 + return 0;
 + }
 +
 + if (cmd-data_length  off + 2)
 + return TCM_PARAMETER_LIST_LENGTH_ERROR;
 +
   buf = transport_kmap_data_sg(cmd);
   if (!buf)
   return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
 @@ -1007,6 +1015,11 @@ static sense_reason_t spc_emulate_modeselect(struct 
 se_cmd *cmd)
   goto out;
  
  check_contents:
 + if (cmd-data_length  off + length) {
 + ret = TCM_PARAMETER_LIST_LENGTH_ERROR;
 + goto out;
 + }
 +
   if (memcmp(buf + off, tbuf, length))
   ret = TCM_INVALID_PARAMETER_LIST;
  


--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/3] target: Fix parameter list length checking in MODE SELECT

2013-02-08 Thread Roland Dreier
From: Roland Dreier rol...@purestorage.com

An empty parameter list (length == 0) is not an error, so succeed MODE
SELECT in this case.  If the parameter list length is too small,
return the correct sense code of PARAMETER LIST LENGTH ERROR.

Signed-off-by: Roland Dreier rol...@purestorage.com
---
 drivers/target/target_core_spc.c | 13 +
 1 file changed, 13 insertions(+)

diff --git a/drivers/target/target_core_spc.c b/drivers/target/target_core_spc.c
index 2d88f08..73c5d53 100644
--- a/drivers/target/target_core_spc.c
+++ b/drivers/target/target_core_spc.c
@@ -983,6 +983,14 @@ static sense_reason_t spc_emulate_modeselect(struct se_cmd 
*cmd)
int ret = 0;
int i;
 
+   if (!cmd-data_length) {
+   target_complete_cmd(cmd, GOOD);
+   return 0;
+   }
+
+   if (cmd-data_length  off + 2)
+   return TCM_PARAMETER_LIST_LENGTH_ERROR;
+
buf = transport_kmap_data_sg(cmd);
if (!buf)
return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
@@ -1007,6 +1015,11 @@ static sense_reason_t spc_emulate_modeselect(struct 
se_cmd *cmd)
goto out;
 
 check_contents:
+   if (cmd-data_length  off + length) {
+   ret = TCM_PARAMETER_LIST_LENGTH_ERROR;
+   goto out;
+   }
+
if (memcmp(buf + off, tbuf, length))
ret = TCM_INVALID_PARAMETER_LIST;
 
-- 
1.8.1.2

--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html