Page MenuHomeFreeBSD

D34832.diff
No OneTemporary

D34832.diff

diff --git a/sys/net/if_llatbl.c b/sys/net/if_llatbl.c
--- a/sys/net/if_llatbl.c
+++ b/sys/net/if_llatbl.c
@@ -926,8 +926,10 @@
linkhdrsize = sizeof(linkhdr);
if (lltable_calc_llheader(ifp, dst->sa_family, LLADDR(dl),
- linkhdr, &linkhdrsize, &lladdr_off) != 0)
+ linkhdr, &linkhdrsize, &lladdr_off) != 0) {
+ lltable_free_entry(llt, lle);
return (EINVAL);
+ }
lltable_set_entry_addr(ifp, lle, linkhdr, linkhdrsize,
lladdr_off);
if ((rtm->rtm_flags & RTF_ANNOUNCE))
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -1563,7 +1563,7 @@
linkhdrsize = LLE_MAX_LINKHDR;
if (lltable_calc_llheader(ifp, AF_INET, IF_LLADDR(ifp),
linkhdr, &linkhdrsize, &lladdr_off) != 0) {
- NET_EPOCH_CALL(in_lltable_destroy_lle_unlocked, &lle->lle_epoch_ctx);
+ in_lltable_free_entry(llt, lle);
return (NULL);
}
lltable_set_entry_addr(ifp, lle, linkhdr, linkhdrsize,
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -2325,7 +2325,7 @@
linkhdrsize = LLE_MAX_LINKHDR;
if (lltable_calc_llheader(ifp, AF_INET6, IF_LLADDR(ifp),
linkhdr, &linkhdrsize, &lladdr_off) != 0) {
- NET_EPOCH_CALL(in6_lltable_destroy_lle_unlocked, &lle->lle_epoch_ctx);
+ in6_lltable_free_entry(llt, lle);
return (NULL);
}
lltable_set_entry_addr(ifp, lle, linkhdr, linkhdrsize,
diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c
--- a/sys/netinet6/nd6.c
+++ b/sys/netinet6/nd6.c
@@ -2036,8 +2036,10 @@
if (lladdr != NULL) {
linkhdrsize = sizeof(linkhdr);
if (lltable_calc_llheader(ifp, AF_INET6, lladdr,
- linkhdr, &linkhdrsize, &lladdr_off) != 0)
+ linkhdr, &linkhdrsize, &lladdr_off) != 0) {
+ lltable_free_entry(LLTABLE6(ifp), ln);
return;
+ }
lltable_set_entry_addr(ifp, ln, linkhdr, linkhdrsize,
lladdr_off);
}

File Metadata

Mime Type
text/plain
Expires
Tue, Sep 24, 7:17 PM (21 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
12691506
Default Alt Text
D34832.diff (1 KB)

Event Timeline