summaryrefslogtreecommitdiffstats
path: root/sys/geom/geom_dev.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2004-09-24 06:43:20 +0000
committerphk <phk@FreeBSD.org>2004-09-24 06:43:20 +0000
commit54ba36ef3e32381967002b4014f2445177602dd1 (patch)
tree26f51b61b321946ffe7edbacd677e3f2e469b527 /sys/geom/geom_dev.c
parent1a87f07f3cae75c1569eb44ace4dd0ab93112e5c (diff)
downloadFreeBSD-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.c8
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);
}
OpenPOWER on IntegriCloud