diff options
author | thompsa <thompsa@FreeBSD.org> | 2007-05-07 00:28:55 +0000 |
---|---|---|
committer | thompsa <thompsa@FreeBSD.org> | 2007-05-07 00:28:55 +0000 |
commit | 46904da6708bef5c82473bee8fa21f4e0d2a8730 (patch) | |
tree | 67b80c585fcd86344d00a12b18ee6d2d44484700 /sys/net/ieee8023ad_lacp.c | |
parent | caab23fd294a310227a4c2f4912f639cdebc28e2 (diff) | |
download | FreeBSD-src-46904da6708bef5c82473bee8fa21f4e0d2a8730.zip FreeBSD-src-46904da6708bef5c82473bee8fa21f4e0d2a8730.tar.gz |
Avoid touching various unsafe parts if the interface is disappearing.
Diffstat (limited to 'sys/net/ieee8023ad_lacp.c')
-rw-r--r-- | sys/net/ieee8023ad_lacp.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/net/ieee8023ad_lacp.c b/sys/net/ieee8023ad_lacp.c index 2753c98..b022035 100644 --- a/sys/net/ieee8023ad_lacp.c +++ b/sys/net/ieee8023ad_lacp.c @@ -485,7 +485,9 @@ lacp_port_destroy(struct lagg_port *lgp) lacp_unselect(lp); lgp->lp_flags &= ~LAGG_PORT_DISABLED; - if_delmulti_ifma(lp->lp_ifma); + /* The address may have already been removed by if_purgemaddrs() */ + if (!lgp->lp_detaching) + if_delmulti_ifma(lp->lp_ifma); LIST_REMOVE(lp, lp_next); free(lp, M_DEVBUF); |