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

Kip Macy kmacy at FreeBSD.org
Sat Dec 13 00:31:33 PST 2008


Author: kmacy
Date: Sat Dec 13 08:31:32 2008
New Revision: 186032
URL: http://svn.freebsd.org/changeset/base/186032

Log:
  hold lle lock across flags check

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	Sat Dec 13 07:45:48 2008	(r186031)
+++ projects/arpv2_merge_1/sys/netinet/if_ether.c	Sat Dec 13 08:31:32 2008	(r186032)
@@ -154,19 +154,20 @@ arptimer(void *arg)
 		return;
 	}
 	ifp = lle->lle_tbl->llt_ifp;
+	IF_AFDATA_LOCK(ifp);
+	LLE_WLOCK(lle);
 	if ((lle->la_flags & LLE_DELETED) ||
 	    (time_second >= lle->la_expire)) {
-		IF_AFDATA_LOCK(ifp);
 		if (!callout_pending(&lle->la_timer) &&
 		    callout_active(&lle->la_timer))
 			(void) llentry_free(lle);
-		IF_AFDATA_UNLOCK(ifp);
 	} else {
 		/*
 		 * Still valid, just drop our reference
 		 */
-		LLE_FREE(lle);
+		LLE_FREE_LOCKED(lle);
 	}
+	IF_AFDATA_UNLOCK(ifp);
 }
 
 /*


More information about the svn-src-projects mailing list