Close race between geom destruction on g_vfs_close() when softc destroyed

and g_vfs_orphan() call that tries to access softc, intruced at r227015.

PR:		kern/162997
This commit is contained in:
Alexander Motin 2011-12-02 17:09:48 +00:00
parent 2c418c0083
commit a2fa37fe67

View File

@ -169,8 +169,10 @@ g_vfs_orphan(struct g_consumer *cp)
g_topology_assert();
gp = cp->geom;
sc = gp->softc;
g_trace(G_T_TOPOLOGY, "g_vfs_orphan(%p(%s))", cp, gp->name);
sc = gp->softc;
if (sc == NULL)
return;
mtx_lock(&sc->sc_mtx);
sc->sc_orphaned = 1;
destroy = (sc->sc_active == 0);