diff options
author | bms <bms@FreeBSD.org> | 2004-10-26 19:49:45 +0000 |
---|---|---|
committer | bms <bms@FreeBSD.org> | 2004-10-26 19:49:45 +0000 |
commit | 7f25933194eb450918512cabf84f182d7935e05e (patch) | |
tree | dcaf63a8ff336841b49ec53b59b304ebf1b78d18 /sys/dev | |
parent | 70d8e4e3fedc8eedfc17a88845ab75eb6e16c2d8 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/dev/vr/if_vr.c | 2 |
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); |