summaryrefslogtreecommitdiffstats
path: root/sys/netinet6/icmp6.c
diff options
context:
space:
mode:
authorbz <bz@FreeBSD.org>2012-05-25 01:42:48 +0000
committerbz <bz@FreeBSD.org>2012-05-25 01:42:48 +0000
commit3971a44478c10925761e504c2892edb9470c4cf6 (patch)
tree45c0209a102e7f59e5fccb9d1d062469ccfd50ad /sys/netinet6/icmp6.c
parentefb14c628e4e807d6d94a4a6d7b24383c536ece5 (diff)
downloadFreeBSD-src-3971a44478c10925761e504c2892edb9470c4cf6.zip
FreeBSD-src-3971a44478c10925761e504c2892edb9470c4cf6.tar.gz
MFp4 bz_ipv6_fast:
No need to hold the (expensive) rt lock over (expensive) logging. Sponsored by: The FreeBSD Foundation Sponsored by: iXsystems Reviewed by: gnn (as part of the whole) MFC After: 3 days
Diffstat (limited to 'sys/netinet6/icmp6.c')
-rw-r--r--sys/netinet6/icmp6.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet6/icmp6.c b/sys/netinet6/icmp6.c
index 967d01a..a1e19d9 100644
--- a/sys/netinet6/icmp6.c
+++ b/sys/netinet6/icmp6.c
@@ -2418,23 +2418,23 @@ icmp6_redirect_input(struct mbuf *m, int off)
if (rt) {
if (rt->rt_gateway == NULL ||
rt->rt_gateway->sa_family != AF_INET6) {
+ RTFREE_LOCKED(rt);
nd6log((LOG_ERR,
"ICMP6 redirect rejected; no route "
"with inet6 gateway found for redirect dst: %s\n",
icmp6_redirect_diag(&src6, &reddst6, &redtgt6)));
- RTFREE_LOCKED(rt);
goto bad;
}
gw6 = &(((struct sockaddr_in6 *)rt->rt_gateway)->sin6_addr);
if (bcmp(&src6, gw6, sizeof(struct in6_addr)) != 0) {
+ RTFREE_LOCKED(rt);
nd6log((LOG_ERR,
"ICMP6 redirect rejected; "
"not equal to gw-for-src=%s (must be same): "
"%s\n",
ip6_sprintf(ip6buf, gw6),
icmp6_redirect_diag(&src6, &reddst6, &redtgt6)));
- RTFREE_LOCKED(rt);
goto bad;
}
} else {
OpenPOWER on IntegriCloud