aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMax Laier <mlaier@FreeBSD.org>2004-07-23 03:37:05 +0000
committerMax Laier <mlaier@FreeBSD.org>2004-07-23 03:37:05 +0000
commitc99c1da5896d5465f8db32e347e710d882a90501 (patch)
treee0dbf0cf1009072c8f4e5496d339374a39f47809 /sys
parentbb73d87a1e7e5a8bf98001171019291136138915 (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/contrib/pf/net/pf_if.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/contrib/pf/net/pf_if.c b/sys/contrib/pf/net/pf_if.c
index 079b0251bc27d..7fe8a7b9a2078 100644
--- a/sys/contrib/pf/net/pf_if.c
+++ b/sys/contrib/pf/net/pf_if.c
@@ -182,11 +182,12 @@ pfi_cleanup(void)
struct ifnet *ifp;
PF_ASSERT(MA_OWNED);
- PF_UNLOCK();
+ PF_UNLOCK();
EVENTHANDLER_DEREGISTER(ifnet_arrival_event, pfi_attach_cookie);
EVENTHANDLER_DEREGISTER(ifnet_departure_event, pfi_detach_cookie);
EVENTHANDLER_DEREGISTER(if_clone_event, pfi_clone_cookie);
+ PF_LOCK();
IFNET_RLOCK();
/* release PFI_IFLAG_INSTANCE */
@@ -194,14 +195,13 @@ pfi_cleanup(void)
strlcpy(key.pfik_name, ifp->if_xname, sizeof(key.pfik_name));
p = RB_FIND(pfi_ifhead, &pfi_ifs, &key);
if (p != NULL) {
- PF_LOCK();
+ IFNET_RUNLOCK();
pfi_detach_ifnet(ifp);
- PF_UNLOCK();
+ IFNET_RLOCK();
}
}
IFNET_RUNLOCK();
- PF_LOCK();
/* XXX clear all other interface group */
while ((p = RB_MIN(pfi_ifhead, &pfi_ifs))) {
RB_REMOVE(pfi_ifhead, &pfi_ifs, p);