diff options
author | zec <zec@FreeBSD.org> | 2011-07-16 19:11:45 +0000 |
---|---|---|
committer | zec <zec@FreeBSD.org> | 2011-07-16 19:11:45 +0000 |
commit | e3d85d5e0d05fe150d2fc418c7fddf35bcdbbe4e (patch) | |
tree | b97e06165173e37e39e42232c04b25fea4083308 /sys/netgraph | |
parent | 1cbd4038aac28f6e17a854f68068d524a5e7eba2 (diff) | |
download | FreeBSD-src-e3d85d5e0d05fe150d2fc418c7fddf35bcdbbe4e.zip FreeBSD-src-e3d85d5e0d05fe150d2fc418c7fddf35bcdbbe4e.tar.gz |
Clear pending ifnet events, in an attempt at preventing
ng_ether_link_state() from being dispatched after we have
cleared our IFP2NG(ifp).
MFC after: 3 days
Diffstat (limited to 'sys/netgraph')
-rw-r--r-- | sys/netgraph/ng_ether.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/netgraph/ng_ether.c b/sys/netgraph/ng_ether.c index b51d048..afedaa3 100644 --- a/sys/netgraph/ng_ether.c +++ b/sys/netgraph/ng_ether.c @@ -55,6 +55,7 @@ #include <sys/proc.h> #include <sys/syslog.h> #include <sys/socket.h> +#include <sys/taskqueue.h> #include <net/if.h> #include <net/if_dl.h> @@ -336,6 +337,7 @@ ng_ether_detach(struct ifnet *ifp) const node_p node = IFP2NG(ifp); const priv_p priv = NG_NODE_PRIVATE(node); + taskqueue_drain(taskqueue_swi, &ifp->if_linktask); NG_NODE_REALLY_DIE(node); /* Force real removal of node */ /* * We can't assume the ifnet is still around when we run shutdown |