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

Reply via email to