svn commit: r185713 - head/sys/netinet

Christian S.J. Peron csjp at FreeBSD.org
Sat Dec 6 11:09:39 PST 2008


Author: csjp
Date: Sat Dec  6 19:09:38 2008
New Revision: 185713
URL: http://svn.freebsd.org/changeset/base/185713

Log:
  in_rtalloc1(9) returns a locked route, so make sure that we use
  RTFREE_LOCKED() here.  This macro makes sure the reference count
  on the route is being managed properly.  This elimates another
  case which results in the following message being printed to the
  console:
  
  rtfree: 0xc841ee88 has 1 refs
  
  Reviewed by:	bz
  MFC after:	2 weeks

Modified:
  head/sys/netinet/if_ether.c

Modified: head/sys/netinet/if_ether.c
==============================================================================
--- head/sys/netinet/if_ether.c	Sat Dec  6 14:50:46 2008	(r185712)
+++ head/sys/netinet/if_ether.c	Sat Dec  6 19:09:38 2008	(r185713)
@@ -924,12 +924,12 @@ reply:
 			 * over who claims what Ether address.
 			 */
 			if (rt->rt_ifp == ifp) {
-				rtfree(rt);
+				RTFREE_LOCKED(rt);
 				goto drop;
 			}
 			(void)memcpy(ar_tha(ah), ar_sha(ah), ah->ar_hln);
 			(void)memcpy(ar_sha(ah), enaddr, ah->ar_hln);
-			rtfree(rt);
+			RTFREE_LOCKED(rt);
 
 			/*
 			 * Also check that the node which sent the ARP packet
@@ -948,10 +948,10 @@ reply:
 				    " from %s via %s, expecting %s\n",
 				    inet_ntoa(isaddr), ifp->if_xname,
 				    rt->rt_ifp->if_xname);
-				rtfree(rt);
+				RTFREE_LOCKED(rt);
 				goto drop;
 			}
-			rtfree(rt);
+			RTFREE_LOCKED(rt);
 
 #ifdef DEBUG_PROXY
 			printf("arp: proxying for %s\n",


More information about the svn-src-all mailing list