DragonFlyBSD Kernel Audit
DF-0355 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c
--- a/sys/netinet6/nd6.c
+++ b/sys/netinet6/nd6.c
@@ -2165,6 +2165,7 @@
 		return EPERM;
 	error = 0;
 
+	mtx_lock(&nd6_mtx);
 	for (dr = TAILQ_FIRST(&nd_defrouter); dr;
 	     dr = TAILQ_NEXT(dr, dr_entry)) {
 		d = (struct in6_defrouter *)buf;
@@ -2191,6 +2192,7 @@
 		if (error)
 			break;
 	}
+	mtx_unlock(&nd6_mtx);
 	return error;
 }
 
@@ -2206,6 +2208,7 @@
 		return EPERM;
 	error = 0;
 
+	mtx_lock(&nd6_mtx);
 	for (pr = nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
 		u_short advrtrs;
 		size_t advance;
@@ -2263,5 +2266,6 @@
 		if (error)
 			break;
 	}
+	mtx_unlock(&nd6_mtx);
 	return error;
 }