Author: sbruno
Date: Sun Jun 29 18:38:44 2014
New Revision: 268017
URL: http://svnweb.freebsd.org/changeset/base/268017

Log:
  Check return of cam_periph_find() before using it in a printf.
  
  If cam_periph_find() doesn't locate the path we requested, bail to error
  condition.
  
  Acquire ciss->mtx for this operation.
  
  Reviewed by:  "Benesh, Scott" <scott.ben...@hp.com>
  MFC after:    2 weeks

Modified:
  head/sys/dev/ciss/ciss.c

Modified: head/sys/dev/ciss/ciss.c
==============================================================================
--- head/sys/dev/ciss/ciss.c    Sun Jun 29 09:29:27 2014        (r268016)
+++ head/sys/dev/ciss/ciss.c    Sun Jun 29 18:38:44 2014        (r268017)
@@ -3429,13 +3429,17 @@ ciss_name_device(struct ciss_softc *sc, 
                             target, 0);
 
     if (status == CAM_REQ_CMP) {
+       mtx_lock(&sc->ciss_mtx);
        xpt_path_lock(path);
        periph = cam_periph_find(path, NULL);
-       sprintf(sc->ciss_logical[bus][target].cl_name, "%s%d",
-               periph->periph_name, periph->unit_number);
        xpt_path_unlock(path);
+       mtx_unlock(&sc->ciss_mtx);
        xpt_free_path(path);
-       return(0);
+       if (periph != NULL) {
+               sprintf(sc->ciss_logical[bus][target].cl_name, "%s%d",
+                       periph->periph_name, periph->unit_number);
+               return(0);
+       }
     }
     sc->ciss_logical[bus][target].cl_name[0] = 0;
     return(ENOENT);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to