diff options
| author | Mark Johnston <markj@FreeBSD.org> | 2022-04-08 15:46:19 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2022-04-08 15:46:19 +0000 |
| commit | dd91d8448665dd31df5be7341756394293c6e36c (patch) | |
| tree | 6e2d6c3191f8c3120cdac4238821134733e0d506 /sys/netinet/if_ether.c | |
| parent | fcaf016796cc0272a8c239850fa87244eebefe13 (diff) | |
Diffstat (limited to 'sys/netinet/if_ether.c')
| -rw-r--r-- | sys/netinet/if_ether.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c index f54df9937936..fd0423858bb8 100644 --- a/sys/netinet/if_ether.c +++ b/sys/netinet/if_ether.c @@ -1228,16 +1228,20 @@ arp_check_update_lle(struct arphdr *ah, struct in_addr isaddr, struct ifnet *ifp /* Calculate full link prepend to use in lle */ linkhdrsize = sizeof(linkhdr); if (lltable_calc_llheader(ifp, AF_INET, ar_sha(ah), linkhdr, - &linkhdrsize, &lladdr_off) != 0) + &linkhdrsize, &lladdr_off) != 0) { + LLE_WUNLOCK(la); return; + } /* Check if something has changed */ if (memcmp(la->r_linkdata, linkhdr, linkhdrsize) != 0 || (la->la_flags & LLE_VALID) == 0) { /* Try to perform LLE update */ if (lltable_try_set_entry_addr(ifp, la, linkhdr, linkhdrsize, - lladdr_off) == 0) + lladdr_off) == 0) { + LLE_WUNLOCK(la); return; + } /* Clear fast path feedback request if set */ llentry_mark_used(la); |
