Author: pluknet
Date: Mon Aug 20 20:40:14 2012
New Revision: 239468
URL: http://svn.freebsd.org/changeset/base/239468

Log:
  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

Modified:
  head/sbin/camcontrol/camcontrol.c

Modified: head/sbin/camcontrol/camcontrol.c
==============================================================================
--- head/sbin/camcontrol/camcontrol.c   Mon Aug 20 19:26:43 2012        
(r239467)
+++ head/sbin/camcontrol/camcontrol.c   Mon Aug 20 20:40:14 2012        
(r239468)
@@ -5459,6 +5459,7 @@ smpphylist(struct cam_device *device, in
 
        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, in
                goto bailout;
        }
 
-       STAILQ_INIT(&devlist.dev_queue);
        devlist.path_id = device->path_id;
 
        retval = buildbusdevlist(&devlist);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to