svn commit: r222274 - stable/8/sys/kern
Konstantin Belousov
kib at FreeBSD.org
Wed May 25 03:25:15 UTC 2011
Author: kib
Date: Wed May 25 03:25:14 2011
New Revision: 222274
URL: http://svn.freebsd.org/changeset/base/222274
Log:
MFC r222086:
The protection against the race with dev_rel(), introduced in r163328,
should be extended to cover destroy_devl() calls for the children of the
destroyed dev.
Modified:
stable/8/sys/kern/kern_conf.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
Modified: stable/8/sys/kern/kern_conf.c
==============================================================================
--- stable/8/sys/kern/kern_conf.c Wed May 25 01:04:12 2011 (r222273)
+++ stable/8/sys/kern/kern_conf.c Wed May 25 03:25:14 2011 (r222274)
@@ -885,6 +885,8 @@ destroy_devl(struct cdev *dev)
/* Remove name marking */
dev->si_flags &= ~SI_NAMED;
+ dev->si_refcount++; /* Avoid race with dev_rel() */
+
/* If we are a child, remove us from the parents list */
if (dev->si_flags & SI_CHILD) {
LIST_REMOVE(dev, si_siblings);
@@ -901,7 +903,6 @@ destroy_devl(struct cdev *dev)
dev->si_flags &= ~SI_CLONELIST;
}
- dev->si_refcount++; /* Avoid race with dev_rel() */
csw = dev->si_devsw;
dev->si_devsw = NULL; /* already NULL for SI_ALIAS */
while (csw != NULL && csw->d_purge != NULL && dev->si_threadcount) {
More information about the svn-src-all
mailing list