Date: Sat, 13 Dec 2008 20:14:41 +0000 From: "Kip Macy" <kmacy@freebsd.org> To: "Tor Egge" <Tor.Egge@cvsup.no.freebsd.org> Cc: glz@hidden-powers.com, freebsd-current@freebsd.org Subject: Re: [PANIC] _rw_rlock (radix node head): wlock already held @ /usr/src/sys/net/route.c:291 Message-ID: <3c1674c90812131214r354a11d7i35d354694026cb78@mail.gmail.com> In-Reply-To: <20081213.200612.74714794.Tor.Egge@cvsup.no.freebsd.org> References: <088C87B70CB486D2F808091A@10.255.253.2> <20081213.200612.74714794.Tor.Egge@cvsup.no.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Heh, that is the correct fix that I was about to commit. Thanks, Kip On Sat, Dec 13, 2008 at 8:06 PM, Tor Egge <Tor.Egge@cvsup.no.freebsd.org> wrote: >> 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 > > 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 > > -- If we desire respect for the law, we must first make the law respectable. - Louis D. Brandeis
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3c1674c90812131214r354a11d7i35d354694026cb78>