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; -- 1.6.5 -- 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 |