diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c index e09ad3d4738..ef50ec9ca96 100644 --- a/sys/netinet/if_ether.c +++ b/sys/netinet/if_ether.c @@ -1479,6 +1479,10 @@ arp_handle_ifllchange(struct ifnet *ifp) static void arp_iflladdr(void *arg __unused, struct ifnet *ifp) { + /* if_bridge can update its lladdr during if_vmove(), after we've done + * if_detach_internal()/dom_ifdetach(). */ + if (ifp->if_afdata[AF_INET] == NULL) + return; lltable_update_ifaddr(LLTABLE(ifp)); diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c index 497c0bfc10e..62f0ac733a2 100644 --- a/sys/netinet6/nd6.c +++ b/sys/netinet6/nd6.c @@ -208,6 +208,8 @@ nd6_lle_event(void *arg __unused, struct llentry *lle, int evt) static void nd6_iflladdr(void *arg __unused, struct ifnet *ifp) { + if (ifp->if_afdata[AF_INET6] == NULL) + return; lltable_update_ifaddr(LLTABLE6(ifp)); }