svn commit: r284776 - stable/10/sys/netinet
Ermal Luçi
eri at FreeBSD.org
Wed Jun 24 19:06:55 UTC 2015
Author: eri
Date: Wed Jun 24 19:06:54 2015
New Revision: 284776
URL: https://svnweb.freebsd.org/changeset/base/284776
Log:
MFC r284512: Properly handle locking on the ARP protocol request sending.
Modified:
stable/10/sys/netinet/if_ether.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/netinet/if_ether.c
==============================================================================
--- stable/10/sys/netinet/if_ether.c Wed Jun 24 18:58:42 2015 (r284775)
+++ stable/10/sys/netinet/if_ether.c Wed Jun 24 19:06:54 2015 (r284776)
@@ -365,6 +365,7 @@ retry:
if ((la->la_flags & LLE_VALID) &&
((la->la_flags & LLE_STATIC) || la->la_expire > time_uptime)) {
bcopy(&la->ll_addr, desten, ifp->if_addrlen);
+ renew = 0;
/*
* If entry has an expiry time and it is approaching,
* see if we need to send an ARP request within this
@@ -372,13 +373,21 @@ retry:
*/
if (!(la->la_flags & LLE_STATIC) &&
time_uptime + la->la_preempt > la->la_expire) {
- arprequest(ifp, NULL, &SIN(dst)->sin_addr, NULL);
+ renew = 1;
la->la_preempt--;
}
*lle = la;
- error = 0;
- goto done;
+
+ if (flags & LLE_EXCLUSIVE)
+ LLE_WUNLOCK(la);
+ else
+ LLE_RUNLOCK(la);
+
+ if (renew == 1)
+ arprequest(ifp, NULL, &SIN(dst)->sin_addr, NULL);
+
+ return (0);
}
if (la->la_flags & LLE_STATIC) { /* should not happen! */
More information about the svn-src-all
mailing list