svn commit: r186051 - head/sys/netinet6
Kip Macy
kmacy at FreeBSD.org
Sat Dec 13 20:15:43 UTC 2008
Author: kmacy
Date: Sat Dec 13 20:15:42 2008
New Revision: 186051
URL: http://svn.freebsd.org/changeset/base/186051
Log:
in6_addroute is called through rnh_addadr which is always called with the radix node head lock held
exclusively. Pass RTF_RNH_LOCKED to rtalloc so that rtalloc1_fib will not try to re-acquire the lock.
Modified:
head/sys/netinet6/in6_rmx.c
Modified: head/sys/netinet6/in6_rmx.c
==============================================================================
--- head/sys/netinet6/in6_rmx.c Sat Dec 13 20:13:22 2008 (r186050)
+++ head/sys/netinet6/in6_rmx.c Sat Dec 13 20:15:42 2008 (r186051)
@@ -160,7 +160,7 @@ in6_addroute(void *v_arg, void *n_arg, s
* Find out if it is because of an
* ARP entry and delete it if so.
*/
- rt2 = rtalloc1((struct sockaddr *)sin6, 0, RTF_CLONING);
+ rt2 = rtalloc1((struct sockaddr *)sin6, 0, RTF_RNH_LOCKED|RTF_CLONING);
if (rt2) {
if (rt2->rt_flags & RTF_LLINFO &&
rt2->rt_flags & RTF_HOST &&
@@ -187,7 +187,7 @@ in6_addroute(void *v_arg, void *n_arg, s
* net route entry, 3ffe:0501:: -> if0.
* This case should not raise an error.
*/
- rt2 = rtalloc1((struct sockaddr *)sin6, 0, RTF_CLONING);
+ rt2 = rtalloc1((struct sockaddr *)sin6, 0, RTF_RNH_LOCKED|RTF_CLONING);
if (rt2) {
if ((rt2->rt_flags & (RTF_CLONING|RTF_HOST|RTF_GATEWAY))
== RTF_CLONING
More information about the svn-src-all
mailing list