git: 8ee0826f7513 - main - in6: Enter the net epoch in in6_tmpaddrtimer()

Mark Johnston markj at FreeBSD.org
Mon Aug 9 17:49:27 UTC 2021


The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=8ee0826f75136f6ac6443f32c582882bc31abd73

commit 8ee0826f75136f6ac6443f32c582882bc31abd73
Author:     Mark Johnston <markj at FreeBSD.org>
AuthorDate: 2021-08-09 17:14:23 +0000
Commit:     Mark Johnston <markj at FreeBSD.org>
CommitDate: 2021-08-09 17:27:52 +0000

    in6: Enter the net epoch in in6_tmpaddrtimer()
    
    We need to do so to safely traverse the ifnet list.
    
    Reviewed by:    bz
    MFC after:      1 week
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D31470
---
 sys/netinet6/in6_ifattach.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/sys/netinet6/in6_ifattach.c b/sys/netinet6/in6_ifattach.c
index 02d6a2b230b4..6633a649b812 100644
--- a/sys/netinet6/in6_ifattach.c
+++ b/sys/netinet6/in6_ifattach.c
@@ -828,6 +828,7 @@ void
 in6_tmpaddrtimer(void *arg)
 {
 	CURVNET_SET((struct vnet *) arg);
+	struct epoch_tracker et;
 	struct nd_ifinfo *ndi;
 	u_int8_t nullbuf[8];
 	struct ifnet *ifp;
@@ -837,6 +838,7 @@ in6_tmpaddrtimer(void *arg)
 	    V_ip6_temp_regen_advance) * hz, in6_tmpaddrtimer, curvnet);
 
 	bzero(nullbuf, sizeof(nullbuf));
+	NET_EPOCH_ENTER(et);
 	CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) {
 		if (ifp->if_afdata[AF_INET6] == NULL)
 			continue;
@@ -850,7 +852,7 @@ in6_tmpaddrtimer(void *arg)
 			    ndi->randomseed1, ndi->randomid);
 		}
 	}
-
+	NET_EPOCH_EXIT(et);
 	CURVNET_RESTORE();
 }
 


More information about the dev-commits-src-all mailing list