[stgt] [PATCH] RFC prevent tgtd from segfault when attempting to configure passthrough device

Mark Harvey markh794 at gmail.com
Sat Jul 10 11:21:22 CEST 2010


FUJITA Tomonori wrote:
> On Thu, 8 Jul 2010 11:44:05 +1000
> Mark Harvey <markh794 at gmail.com> wrote:
>
>   
>> This was one way to resolve the segfault if .cmd_passthrough() is NULL
>>
>>
>> From cd9c358476090d1a1758aba03157c30e60c53e57 Mon Sep 17 00:00:00 2001
>> From: Mark Harvey <markh794 at gmail.com>
>> Date: Thu, 8 Jul 2010 06:48:02 +1000
>> Subject: Prevent segfault if passthrough params not correct.
>>
>> If user neglects to supply '--device_type=pt' when creating a
>> passthrough device, tgtd would segfault due to .cmd_passthrough() being NULL
>>
>> Signed-off-by: Mark Harvey <markh794 at gmail.com>
>> ---
>>  usr/bs_sg.c |    8 ++++++++
>>  usr/mmc.c   |    1 +
>>  usr/osd.c   |    1 +
>>  usr/sbc.c   |    1 +
>>  usr/scc.c   |    6 ++++++
>>  usr/smc.c   |    1 +
>>  usr/ssc.c   |    2 +-
>>  usr/tgtd.h  |    1 +
>>  8 files changed, 20 insertions(+), 1 deletions(-)
>>     
>
> Better to check this earlier (that is, when we create a new device)?
>
> How about something like this (not tested)?
>
> =
> From: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp>
> Subject: [PATCH] check pt device creation
>
> Signed-off-by: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp>
> ---
>  usr/target.c |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/usr/target.c b/usr/target.c
> index 5fbfb0e..bb5b0c8 100644
> --- a/usr/target.c
> +++ b/usr/target.c
> @@ -490,6 +490,13 @@ int tgt_device_create(int tid, int dev_type, uint64_t lun, char *params,
>  	} else
>  		bst = get_backingstore_template("null");
>  
> +	if ((!strncmp(bst->bs_name, "bsg", 3) ||
> +	     !strncmp(bst->bs_name, "sg", 2)) &&
> +	    dev_type != TYPE_PT) {
> +		ret = TGTADM_INVALID_REQUEST;
> +		goto out;
> +	}
> +
>  	lu_bsoflags = str_to_open_flags(bsoflags);
>  	if (lu_bsoflags == -1) {
>  		ret = TGTADM_INVALID_REQUEST;
>   

Tested & confirmed this patch works for me as well.

Cheers
Mark
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list