svn commit: r268017 - head/sys/dev/ciss

Sean Bruno sbruno at FreeBSD.org
Sun Jun 29 18:38:45 UTC 2014


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.benesh at 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);


More information about the svn-src-all mailing list