summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorrrs <rrs@FreeBSD.org>2012-08-19 11:54:02 +0000
committerrrs <rrs@FreeBSD.org>2012-08-19 11:54:02 +0000
commit09ab09a1b5b9a8c00b96030457895c206d54040e (patch)
tree4a4b3ea6319287c731bad6403ddbb96b359736d8 /sys/netinet
parent5b60c129a23926a34d19648f60deb6741ee847e2 (diff)
downloadFreeBSD-src-09ab09a1b5b9a8c00b96030457895c206d54040e.zip
FreeBSD-src-09ab09a1b5b9a8c00b96030457895c206d54040e.tar.gz
Though I disagree, I conceed to jhb & Rui. Note
that we still have a problem with this whole structure of locks and in_input.c [it does not lock which it should not, but this *can* lead to crashes]. (I have seen it in our SQA testbed.. besides the one with a refcnt issue that I will have SQA work on next week ;-)
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/in.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index cee6153..0e77174 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -573,6 +573,7 @@ in_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp,
}
TAILQ_REMOVE(&ifp->if_addrhead, &ia->ia_ifa, ifa_link);
IF_ADDR_WUNLOCK(ifp);
+ ifa_free(&ia->ia_ifa); /* if_addrhead */
IN_IFADDR_WLOCK();
TAILQ_REMOVE(&V_in_ifaddrhead, ia, ia_link);
@@ -596,7 +597,6 @@ in_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp,
} else
ifa_free(&iap->ia_ifa);
- ifa_free(&ia->ia_ifa); /* if_addrhead */
ifa_free(&ia->ia_ifa); /* in_ifaddrhead */
out:
if (ia != NULL)
OpenPOWER on IntegriCloud