aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet6
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2010-04-11 16:04:08 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2010-04-11 16:04:08 +0000
commitbecba438d21e071d6a44b18f3180d17ce4ebcf6a (patch)
tree62a56a95d03df4cca3ba14e6c3cae4d3f5a44931 /sys/netinet6
parent3c7ae7bf6722db2a375627484e8863cfa28446eb (diff)
Notes
Diffstat (limited to 'sys/netinet6')
-rw-r--r--sys/netinet6/in6.c6
-rw-r--r--sys/netinet6/nd6.c1
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);