Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Dec 2008 20:06:12 +0000 (UTC)
From:      Tor Egge <Tor.Egge@cvsup.no.freebsd.org>
To:        glz@hidden-powers.com
Cc:        freebsd-current@freebsd.org, kmacy@freebsd.org
Subject:   Re: [PANIC] _rw_rlock (radix node head): wlock already held @ /usr/src/sys/net/route.c:291
Message-ID:  <20081213.200612.74714794.Tor.Egge@cvsup.no.freebsd.org>
In-Reply-To: <088C87B70CB486D2F808091A@[10.255.253.2]>
References:  <088C87B70CB486D2F808091A@[10.255.253.2]>

next in thread | previous in thread | raw e-mail | index | archive | help
----Next_Part(Sat_Dec_13_20_06_12_2008_364)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

> I upgraded to CURRENT Dec 12 11pm and get this panic when ifconfig tries to 
> add an ipv6 route.

I've gotten similar panics and am currently using the enclosed patch.

- Tor Egge

----Next_Part(Sat_Dec_13_20_06_12_2008_364)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="rmx2.diff"

Index: sys/netinet/in_rmx.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/in_rmx.c,v
retrieving revision 1.65
diff -u -r1.65 in_rmx.c
--- sys/netinet/in_rmx.c	2 Dec 2008 21:37:28 -0000	1.65
+++ sys/netinet/in_rmx.c	13 Dec 2008 15:43:33 -0000
@@ -115,7 +115,7 @@
 		 * ARP entry and delete it if so.
 		 */
 		rt2 = in_rtalloc1((struct sockaddr *)sin, 0,
-		    RTF_CLONING, rt->rt_fibnum);
+		    RTF_CLONING | RTF_RNH_LOCKED, rt->rt_fibnum);
 		if (rt2) {
 			if (rt2->rt_flags & RTF_LLINFO &&
 			    rt2->rt_flags & RTF_HOST &&
Index: sys/netinet6/in6_rmx.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet6/in6_rmx.c,v
retrieving revision 1.31
diff -u -r1.31 in6_rmx.c
--- sys/netinet6/in6_rmx.c	8 Dec 2008 00:28:21 -0000	1.31
+++ sys/netinet6/in6_rmx.c	13 Dec 2008 19:51:18 -0000
@@ -160,7 +160,8 @@
 		 * 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_CLONING | RTF_RNH_LOCKED);
 		if (rt2) {
 			if (rt2->rt_flags & RTF_LLINFO &&
 				rt2->rt_flags & RTF_HOST &&
@@ -187,7 +188,8 @@
 		 *	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_CLONING | RTF_RNH_LOCKED);
 		if (rt2) {
 			if ((rt2->rt_flags & (RTF_CLONING|RTF_HOST|RTF_GATEWAY))
 					== RTF_CLONING

----Next_Part(Sat_Dec_13_20_06_12_2008_364)----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081213.200612.74714794.Tor.Egge>