Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Oct 2007 16:15:48 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-current@freebsd.org
Cc:        Ivan Voras <ivoras@freebsd.org>
Subject:   Re: Panic in arpresolve->rt_check?
Message-ID:  <200710101615.48760.jhb@freebsd.org>
In-Reply-To: <fc9ce3$jps$1@sea.gmane.org>
References:  <fc89en$fc2$1@sea.gmane.org> <20070912172752.GA13960@dan.emsphone.com> <fc9ce3$jps$1@sea.gmane.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 12 September 2007 02:50:37 pm Ivan Voras wrote:
> Dan Nelson wrote:
> 
> > The same panic was also reported for 6.2 via PR 107865 and PR 112490. 
> > 112490 included a workaround patch (I haven't tried it; just found it).
> 
> The proposed patch in kern/112490 looks trivial but someone who knows
> more about net locking should check it out. Unfortunately it lacks
> context and I don't know the code in question to apply it safely on a
> production machine :(

I also get panics with what appears to be a double free of rt_gwroute in 
rtexpunge(), so I think while this PR may help some with figuring out the 
problem, I'm not sure it solves the root bug.

Hmm, possibly try this patch:

Index: route.c
===================================================================
RCS file: /usr/cvs/src/sys/net/route.c,v
retrieving revision 1.120
diff -c -r1.120 route.c
*** route.c	11 Jun 2007 12:19:34 -0000	1.120
--- route.c	10 Oct 2007 20:12:54 -0000
***************
*** 1314,1319 ****
--- 1314,1321 ----
  				return (ENETUNREACH);
  			}
  			RT_LOCK(rt0);
+ 			if (rt0->rt_gwroute != NULL)
+ 				RTFREE(rt0->rt_gwroute);
  			rt0->rt_gwroute = rt;
  			if (rt == NULL) {
  				RT_UNLOCK(rt0);


-- 
John Baldwin



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