[Stgt-devel] segmentation fault trying to update LUN 0 ...

FUJITA Tomonori fujita.tomonori
Fri Jul 25 04:07:01 CEST 2008


On Thu, 24 Jul 2008 18:24:27 -0700
"Richard Sharpe" <realrichardsharpe at gmail.com> wrote:

> On Thu, Jul 24, 2008 at 6:08 PM, Richard Sharpe
> <realrichardsharpe at gmail.com> wrote:
> >>> It shouldn't segfault anyway, should it?
> >>
> >> It seems the segfault is in an error path:
> >>
> >>   ./tgtadm --lld iscsi --op update --mode target --tid 1 --lun 0 -b
> >> /root/data/hd_block
> >>   tgtadm: err no: 4294967274
> >>   Segmentation fault
> >>
> >> This is in ipc_mgmt_rsp:
> >>
> >>        if (rsp.err != TGTADM_SUCCESS) {
> >>                eprintf("err no: %u\n", rsp.err);
> >>                eprintf("%s\n", tgtadm_emsg[rsp.err]);
> >>                return EINVAL;
> >>        }
> >>
> >> So, looks like tgtd is returning -22 somewhere ... instead of turning
> >> it into a positive error no.
> >
> > Yes, in the iscsi driver code, iscsi_target_update is returning
> > -ENOENT and -EINVAL.
> >
> > These return codes are wrong. It should return a correct
> > tgtadm_errno.h return code.
> 
> I changed a couple of lines of code in the iscsi target driver, and
> that seems to fix the segfault, however, I notice that the fc/fc.c
> driver is very different and handled in the kernel.
> 
> What I don't know then is whether the in-kernel portions return -errno
> codes, or return tgtadm_error.h error codes (which seems unlikely) ...

We really need to clean up the management code (including error
handling).



More information about the stgt mailing list