svn commit: r216371 - head/sys/kern

Hans Petter Selasky hselasky at FreeBSD.org
Sat Dec 11 08:44:10 UTC 2010


Author: hselasky
Date: Sat Dec 11 08:44:10 2010
New Revision: 216371
URL: http://svn.freebsd.org/changeset/base/216371

Log:
  Fix race in devfs by using LIST_FIRST() instead of
  LIST_FOREACH_SAFE() when freeing the devfs private
  data entries.
  
  Reviewed by:	kib
  MFC after:	3 days
  Approved by:	thompsa (mentor)

Modified:
  head/sys/kern/kern_conf.c

Modified: head/sys/kern/kern_conf.c
==============================================================================
--- head/sys/kern/kern_conf.c	Sat Dec 11 08:32:16 2010	(r216370)
+++ head/sys/kern/kern_conf.c	Sat Dec 11 08:44:10 2010	(r216371)
@@ -926,7 +926,7 @@ static void
 destroy_devl(struct cdev *dev)
 {
 	struct cdevsw *csw;
-	struct cdev_privdata *p, *p1;
+	struct cdev_privdata *p;
 
 	mtx_assert(&devmtx, MA_OWNED);
 	KASSERT(dev->si_flags & SI_NAMED,
@@ -974,7 +974,7 @@ destroy_devl(struct cdev *dev)
 	dev_unlock();
 	notify_destroy(dev);
 	mtx_lock(&cdevpriv_mtx);
-	LIST_FOREACH_SAFE(p, &cdev2priv(dev)->cdp_fdpriv, cdpd_list, p1) {
+	while ((p = LIST_FIRST(&cdev2priv(dev)->cdp_fdpriv)) != NULL) {
 		devfs_destroy_cdevpriv(p);
 		mtx_lock(&cdevpriv_mtx);
 	}


More information about the svn-src-head mailing list