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; }