Date: Tue, 28 Jul 2026 20:47:16 +0000 From: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 788400e9b258 - main - nd6: Do not enter net_epoch under nd6_prelist_add Message-ID: <6a691554.1c32c.6bcca58@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by pouria: URL: https://cgit.FreeBSD.org/src/commit/?id=788400e9b25830d85fad7f9ad16720be6e12ee27 commit 788400e9b25830d85fad7f9ad16720be6e12ee27 Author: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org> AuthorDate: 2026-07-28 20:37:37 +0000 Commit: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org> CommitDate: 2026-07-28 20:37:58 +0000 nd6: Do not enter net_epoch under nd6_prelist_add nd6_prefix_onlink will enter net_epoch when necessary. Also, exit net_epoch earlier in nd6_prefix_onlink, Because we acquired a reference to ifa, and we got our ifa from the pr->ndpr_ifp, we don't need to stay under epoch. While here, style it. Reviewed by: markj, glebius Discussed with: zlei Differential Revision: https://reviews.freebsd.org/D56129 --- sys/netinet6/nd6_rtr.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/sys/netinet6/nd6_rtr.c b/sys/netinet6/nd6_rtr.c index 4004a23308d1..9d7cd3f832d9 100644 --- a/sys/netinet6/nd6_rtr.c +++ b/sys/netinet6/nd6_rtr.c @@ -1434,11 +1434,8 @@ nd6_prelist_add(struct nd_prefixctl *pr, struct nd_prefix **newp) ND6_WUNLOCK(); /* ND_OPT_PI_FLAG_ONLINK processing */ - if (new->ndpr_raf_onlink) { - struct epoch_tracker et; - + if (new->ndpr_raf_onlink != 0) { ND6_ONLINK_LOCK(); - NET_EPOCH_ENTER(et); if ((error = nd6_prefix_onlink(new)) != 0) { nd6log((LOG_ERR, "%s: failed to make the prefix %s/%d " "on-link on %s (errno=%d)\n", __func__, @@ -1446,7 +1443,6 @@ nd6_prelist_add(struct nd_prefixctl *pr, struct nd_prefix **newp) pr->ndpr_plen, if_name(pr->ndpr_ifp), error)); /* proceed anyway. XXX: is it correct? */ } - NET_EPOCH_EXIT(et); ND6_ONLINK_UNLOCK(); } @@ -2138,7 +2134,6 @@ nd6_prefix_onlink(struct nd_prefix *pr) ifa = (struct ifaddr *)in6ifa_ifpforlinklocal(ifp, IN6_IFF_NOTREADY | IN6_IFF_ANYCAST); if (ifa == NULL) { - /* XXX: freebsd does not have ifa_ifwithaf */ CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { if (ifa->ifa_addr->sa_family == AF_INET6) { ifa_ref(ifa); @@ -2147,6 +2142,7 @@ nd6_prefix_onlink(struct nd_prefix *pr) } /* should we care about ia6_flags? */ } + NET_EPOCH_EXIT(et); if (ifa == NULL) { /* * This can still happen, when, for example, we receive an RA @@ -2164,7 +2160,6 @@ nd6_prefix_onlink(struct nd_prefix *pr) error = nd6_prefix_onlink_rtrequest(pr, ifa); ifa_free(ifa); } - NET_EPOCH_EXIT(et); return (error); }home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a691554.1c32c.6bcca58>
