summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_thread.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_thread.c')
-rw-r--r--sys/kern/kern_thread.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/kern/kern_thread.c b/sys/kern/kern_thread.c
index 29bdaa2..d9df5c3 100644
--- a/sys/kern/kern_thread.c
+++ b/sys/kern/kern_thread.c
@@ -566,6 +566,8 @@ calc_remaining(struct proc *p, int mode)
{
int remaining;
+ PROC_LOCK_ASSERT(p, MA_OWNED);
+ PROC_SLOCK_ASSERT(p, MA_OWNED);
if (mode == SINGLE_EXIT)
remaining = p->p_numthreads;
else if (mode == SINGLE_BOUNDARY)
@@ -819,8 +821,11 @@ thread_suspend_check(int return_instead)
td->td_flags &= ~TDF_BOUNDARY;
thread_unlock(td);
PROC_LOCK(p);
- if (return_instead == 0)
+ if (return_instead == 0) {
+ PROC_SLOCK(p);
p->p_boundary_count--;
+ PROC_SUNLOCK(p);
+ }
}
return (0);
}
OpenPOWER on IntegriCloud