summaryrefslogtreecommitdiffstats
path: root/sys/netinet/if_ether.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2010-11-02 13:00:56 +0000
committerjhb <jhb@FreeBSD.org>2010-11-02 13:00:56 +0000
commit07732251f20f624a9362ee88e89a1c0761fd8032 (patch)
treee99854cc9bdff95c4fa81d6a801ec505afff83f1 /sys/netinet/if_ether.c
parent8c8cb8e58a701769f45596db89749c030b743514 (diff)
downloadFreeBSD-src-07732251f20f624a9362ee88e89a1c0761fd8032.zip
FreeBSD-src-07732251f20f624a9362ee88e89a1c0761fd8032.tar.gz
Don't leak the LLE lock if the arptimer callout is pending or inactive.
Reported by: David Rhodus MFC after: 1 month
Diffstat (limited to 'sys/netinet/if_ether.c')
-rw-r--r--sys/netinet/if_ether.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c
index f18236f..6d38388 100644
--- a/sys/netinet/if_ether.c
+++ b/sys/netinet/if_ether.c
@@ -178,16 +178,16 @@ arptimer(void *arg)
LLE_REMREF(lle);
(void) llentry_free(lle);
ARPSTAT_INC(timeouts);
- }
+ } else {
#ifdef DIAGNOSTIC
- else {
struct sockaddr *l3addr = L3_ADDR(lle);
log(LOG_INFO,
"arptimer issue: %p, IPv4 address: \"%s\"\n", lle,
inet_ntoa(
((const struct sockaddr_in *)l3addr)->sin_addr));
- }
#endif
+ LLE_WUNLOCK(lle);
+ }
}
IF_AFDATA_UNLOCK(ifp);
CURVNET_RESTORE();
OpenPOWER on IntegriCloud