diff options
author | jhb <jhb@FreeBSD.org> | 2010-11-02 13:00:56 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2010-11-02 13:00:56 +0000 |
commit | 07732251f20f624a9362ee88e89a1c0761fd8032 (patch) | |
tree | e99854cc9bdff95c4fa81d6a801ec505afff83f1 | |
parent | 8c8cb8e58a701769f45596db89749c030b743514 (diff) | |
download | FreeBSD-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
-rw-r--r-- | sys/netinet/if_ether.c | 6 |
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(); |