svn commit: r185841 - projects/arpv2_merge_1/sys/netinet

Kip Macy kmacy at FreeBSD.org
Tue Dec 9 23:45:11 PST 2008


Author: kmacy
Date: Wed Dec 10 07:45:11 2008
New Revision: 185841
URL: http://svn.freebsd.org/changeset/base/185841

Log:
  we might be renewing the lookup without la_hold set

Modified:
  projects/arpv2_merge_1/sys/netinet/if_ether.c

Modified: projects/arpv2_merge_1/sys/netinet/if_ether.c
==============================================================================
--- projects/arpv2_merge_1/sys/netinet/if_ether.c	Wed Dec 10 07:14:51 2008	(r185840)
+++ projects/arpv2_merge_1/sys/netinet/if_ether.c	Wed Dec 10 07:45:11 2008	(r185841)
@@ -325,17 +325,18 @@ retry:
 	}
 
 	renew = (la->la_asked == 0 || la->la_expire != time_uptime);
+
+	if (renew && ((flags & LLE_EXCLUSIVE) == 0)) {
+		flags |= LLE_EXCLUSIVE;
+		LLE_RUNLOCK(la);
+		goto retry;
+	}
 	/*
 	 * There is an arptab entry, but no ethernet address
 	 * response yet.  Replace the held mbuf with this
 	 * latest one.
 	 */
 	if (m) {
-		if ((flags & LLE_EXCLUSIVE) == 0) {
-			flags |= LLE_EXCLUSIVE;
-			LLE_RUNLOCK(la);
-			goto retry;
-		}
 		if (la->la_hold)
 			m_freem(la->la_hold);
 		la->la_hold = m;


More information about the svn-src-projects mailing list