summaryrefslogtreecommitdiffstats
path: root/sys/dev/vr
diff options
context:
space:
mode:
authorbms <bms@FreeBSD.org>2004-10-26 19:49:45 +0000
committerbms <bms@FreeBSD.org>2004-10-26 19:49:45 +0000
commit7f25933194eb450918512cabf84f182d7935e05e (patch)
treedcaf63a8ff336841b49ec53b59b304ebf1b78d18 /sys/dev/vr
parent70d8e4e3fedc8eedfc17a88845ab75eb6e16c2d8 (diff)
downloadFreeBSD-src-7f25933194eb450918512cabf84f182d7935e05e.zip
FreeBSD-src-7f25933194eb450918512cabf84f182d7935e05e.tar.gz
Workaround for a recursive acquisition of the driver mutex during device
detach; triggered by ether_ifdetach() -> if_delmulti() -> vr_ioctl(). MFC candidate. PR: kern/62889 MFC after: 3 days
Diffstat (limited to 'sys/dev/vr')
-rw-r--r--sys/dev/vr/if_vr.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/dev/vr/if_vr.c b/sys/dev/vr/if_vr.c
index eb986ee..d509b13 100644
--- a/sys/dev/vr/if_vr.c
+++ b/sys/dev/vr/if_vr.c
@@ -798,7 +798,9 @@ vr_detach(device_t dev)
/* These should only be active if attach succeeded */
if (device_is_attached(dev)) {
vr_stop(sc);
+ VR_UNLOCK(sc); /* XXX: Avoid recursive acquire. */
ether_ifdetach(ifp);
+ VR_LOCK(sc);
}
if (sc->vr_miibus)
device_delete_child(dev, sc->vr_miibus);
OpenPOWER on IntegriCloud