diff options
author | bz <bz@FreeBSD.org> | 2012-05-25 01:42:48 +0000 |
---|---|---|
committer | bz <bz@FreeBSD.org> | 2012-05-25 01:42:48 +0000 |
commit | 3971a44478c10925761e504c2892edb9470c4cf6 (patch) | |
tree | 45c0209a102e7f59e5fccb9d1d062469ccfd50ad /sys/netinet6/icmp6.c | |
parent | efb14c628e4e807d6d94a4a6d7b24383c536ece5 (diff) | |
download | FreeBSD-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.c | 4 |
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 { |