svn commit: r195624 - head/sys/net

Kip Macy kmacy at FreeBSD.org
Sat Jul 11 21:56:24 UTC 2009


Author: kmacy
Date: Sat Jul 11 21:56:23 2009
New Revision: 195624
URL: http://svn.freebsd.org/changeset/base/195624

Log:
  Re-factoring for adding weighted routes introduced a
  fairly irritating bug where the system will panic
  when RADIX_MPATH is enabled. This change fixes this.
  
  Approved by:	re@

Modified:
  head/sys/net/route.c

Modified: head/sys/net/route.c
==============================================================================
--- head/sys/net/route.c	Sat Jul 11 21:46:20 2009	(r195623)
+++ head/sys/net/route.c	Sat Jul 11 21:56:23 2009	(r195624)
@@ -987,7 +987,16 @@ rn_mpath_update(int req, struct rt_addri
 			    (rt->rt_gateway->sa_len != gateway->sa_len ||
 				memcmp(rt->rt_gateway, gateway, gateway->sa_len)))
 				error = ESRCH;
-			goto done;
+			else {
+				/*
+				 * remove from tree before returning it
+				 * to the caller
+				 */
+				rn = rnh->rnh_deladdr(dst, netmask, rnh);
+				KASSERT(rt == RNTORT(rn), ("radix node disappeared"));
+				goto gwdelete;
+			}
+			
 		}
 		/*
 		 * use the normal delete code to remove
@@ -1005,6 +1014,7 @@ rn_mpath_update(int req, struct rt_addri
 	 */
 	if ((req == RTM_DELETE) && !rt_mpath_deldup(rto, rt))
 		panic ("rtrequest1: rt_mpath_deldup");
+gwdelete:
 	RT_LOCK(rt);
 	RT_ADDREF(rt);
 	if (req == RTM_DELETE) {


More information about the svn-src-head mailing list