diff options
| author | Bjoern A. Zeeb <bz@FreeBSD.org> | 2010-04-11 16:04:08 +0000 |
|---|---|---|
| committer | Bjoern A. Zeeb <bz@FreeBSD.org> | 2010-04-11 16:04:08 +0000 |
| commit | becba438d21e071d6a44b18f3180d17ce4ebcf6a (patch) | |
| tree | 62a56a95d03df4cca3ba14e6c3cae4d3f5a44931 /sys/netinet6 | |
| parent | 3c7ae7bf6722db2a375627484e8863cfa28446eb (diff) | |
Notes
Diffstat (limited to 'sys/netinet6')
| -rw-r--r-- | sys/netinet6/in6.c | 6 | ||||
| -rw-r--r-- | sys/netinet6/nd6.c | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c index c839efdc8df5..74c15d58a4ae 100644 --- a/sys/netinet6/in6.c +++ b/sys/netinet6/in6.c @@ -2344,8 +2344,12 @@ in6_lltable_prefix_free(struct lltable *llt, &((struct sockaddr_in6 *)L3_ADDR(lle))->sin6_addr, &pfx->sin6_addr, &msk->sin6_addr)) { - callout_drain(&lle->la_timer); + int canceled; + + canceled = callout_drain(&lle->la_timer); LLE_WLOCK(lle); + if (canceled) + LLE_REMREF(lle); llentry_free(lle); } } diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c index 5c250f4417b6..a0ef2040de12 100644 --- a/sys/netinet6/nd6.c +++ b/sys/netinet6/nd6.c @@ -1125,6 +1125,7 @@ nd6_free(struct llentry *ln, int gc) ifp = ln->lle_tbl->llt_ifp; IF_AFDATA_LOCK(ifp); LLE_WLOCK(ln); + LLE_REMREF(ln); llentry_free(ln); IF_AFDATA_UNLOCK(ifp); |
