diff options
Diffstat (limited to 'sys/vm/vm_meter.c')
-rw-r--r-- | sys/vm/vm_meter.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/vm/vm_meter.c b/sys/vm/vm_meter.c index d71eabf..c644631 100644 --- a/sys/vm/vm_meter.c +++ b/sys/vm/vm_meter.c @@ -130,13 +130,16 @@ vmtotal(SYSCTL_HANDLER_ARGS) FOREACH_PROC_IN_SYSTEM(p) { if (p->p_flag & P_SYSTEM) continue; + PROC_LOCK(p); PROC_SLOCK(p); switch (p->p_state) { case PRS_NEW: PROC_SUNLOCK(p); + PROC_UNLOCK(p); continue; break; default: + PROC_SUNLOCK(p); FOREACH_THREAD_IN_PROC(p, td) { thread_lock(td); switch (td->td_state) { @@ -164,7 +167,7 @@ vmtotal(SYSCTL_HANDLER_ARGS) thread_unlock(td); } } - PROC_SUNLOCK(p); + PROC_UNLOCK(p); /* * Note active objects. */ |