diff options
author | phk <phk@FreeBSD.org> | 2004-09-24 06:43:20 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2004-09-24 06:43:20 +0000 |
commit | 54ba36ef3e32381967002b4014f2445177602dd1 (patch) | |
tree | 26f51b61b321946ffe7edbacd677e3f2e469b527 /sys/geom/geom_dev.c | |
parent | 1a87f07f3cae75c1569eb44ace4dd0ab93112e5c (diff) | |
download | FreeBSD-src-54ba36ef3e32381967002b4014f2445177602dd1.zip FreeBSD-src-54ba36ef3e32381967002b4014f2445177602dd1.tar.gz |
Assert topology is held in g_dev_getprovider().
Don't call devsw(). It is not necessary, and we do not need to hold dev_lock
to compare the devsw pointer to our own since we do not dereference it.
Diffstat (limited to 'sys/geom/geom_dev.c')
-rw-r--r-- | sys/geom/geom_dev.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/geom/geom_dev.c b/sys/geom/geom_dev.c index 8d0b703..261e1f2 100644 --- a/sys/geom/geom_dev.c +++ b/sys/geom/geom_dev.c @@ -99,11 +99,13 @@ g_dev_getprovider(struct cdev *dev) { struct g_consumer *cp; + g_topology_assert(); if (dev == NULL) return (NULL); - if (devsw(dev) != &g_dev_cdevsw) - return (NULL); - cp = dev->si_drv2; + if (dev->si_devsw != &g_dev_cdevsw) + cp = NULL; + else + cp = dev->si_drv2; return (cp->provider); } |