Date: Mon, 15 Oct 2007 22:30:03 GMT From: John Baldwin <john@baldwin.cx> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/112490: [route] [patch] Problem in "rt_check" routine. Message-ID: <200710152230.l9FMU3Wf033613@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/112490; it has been noted by GNATS. From: John Baldwin <john@baldwin.cx> To: bug-followup@freebsd.org, mehuljv@yahoo.com Cc: Subject: Re: kern/112490: [route] [patch] Problem in "rt_check" routine. Date: Mon, 15 Oct 2007 16:20:09 -0400 ru@ pointed out a problem in my earlier patch that could result in some double frees. Here is an update: Index: route.c =================================================================== RCS file: /usr/cvs/src/sys/net/route.c,v retrieving revision 1.120 diff -u -r1.120 route.c --- route.c 11 Jun 2007 12:19:34 -0000 1.120 +++ route.c 15 Oct 2007 19:50:53 -0000 @@ -1304,6 +1304,7 @@ if ((rt->rt_flags & RTF_UP) == 0) { RTFREE_LOCKED(rt); /* unlock gwroute */ rt = rt0; + rt->rt_gwroute = NULL; lookup: RT_UNLOCK(rt0); rt = rtalloc1(rt->rt_gateway, 1, 0UL); @@ -1314,6 +1315,8 @@ 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?200710152230.l9FMU3Wf033613>