From aea374f69d51c6f8bf613132539271ce4c97f8aa Mon Sep 17 00:00:00 2001 From: bdrewery Date: Wed, 8 Aug 2018 17:49:35 +0000 Subject: [PATCH] MFC r335183: proc0_post: Fix some locking issues git-svn-id: svn://svn.freebsd.org/base/stable/10@337471 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sys/kern/init_main.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index 9256832e9..67b84f137 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -611,17 +611,23 @@ proc0_post(void *dummy __unused) */ sx_slock(&allproc_lock); FOREACH_PROC_IN_SYSTEM(p) { + PROC_LOCK(p); + if (p->p_state == PRS_NEW) { + PROC_UNLOCK(p); + continue; + } microuptime(&p->p_stats->p_start); PROC_STATLOCK(p); rufetch(p, &ru); /* Clears thread stats */ - PROC_STATUNLOCK(p); p->p_rux.rux_runtime = 0; p->p_rux.rux_uticks = 0; p->p_rux.rux_sticks = 0; p->p_rux.rux_iticks = 0; + PROC_STATUNLOCK(p); FOREACH_THREAD_IN_PROC(p, td) { td->td_runtime = 0; } + PROC_UNLOCK(p); } sx_sunlock(&allproc_lock); PCPU_SET(switchtime, cpu_ticks()); -- 2.45.0