summaryrefslogtreecommitdiffstats
path: root/sys/geom
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2011-12-02 17:09:48 +0000
committermav <mav@FreeBSD.org>2011-12-02 17:09:48 +0000
commit96d9af62bbe817ab1182b559a1fede75543e0177 (patch)
treee97a9ddbe0ce07e3abc96820f06c2fd7100d125d /sys/geom
parent0eadafa1b91a3e0007bd32bba45d7bb8403f7579 (diff)
downloadFreeBSD-src-96d9af62bbe817ab1182b559a1fede75543e0177.zip
FreeBSD-src-96d9af62bbe817ab1182b559a1fede75543e0177.tar.gz
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
Diffstat (limited to 'sys/geom')
-rw-r--r--sys/geom/geom_vfs.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/geom/geom_vfs.c b/sys/geom/geom_vfs.c
index a3e5138..9be0000 100644
--- a/sys/geom/geom_vfs.c
+++ b/sys/geom/geom_vfs.c
@@ -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);
OpenPOWER on IntegriCloud