Avoid segfault in the 'smpphylist' subcommand.

Initialize devlist.dev_queue tail queue early enough before its any
potential traversal in freebusdevlist() when in smpphylist error path.

Reported by:	Pavel Polyakov <bsd kobyla org> (on irc)
Reviewed by:	ken
MFC after:	5 days
This commit is contained in:
pluknet 2012-08-20 20:40:14 +00:00
parent cefce0e7d0
commit 5dea9601ad

View File

@ -5459,6 +5459,7 @@ smpphylist(struct cam_device *device, int argc, char **argv,
bzero(&(&ccb->ccb_h)[1],
sizeof(union ccb) - sizeof(struct ccb_hdr));
STAILQ_INIT(&devlist.dev_queue);
rgrequest = malloc(sizeof(*rgrequest));
if (rgrequest == NULL) {
@ -5527,7 +5528,6 @@ smpphylist(struct cam_device *device, int argc, char **argv,
goto bailout;
}
STAILQ_INIT(&devlist.dev_queue);
devlist.path_id = device->path_id;
retval = buildbusdevlist(&devlist);