postsig() currently requires Giant to be held. Giant is held properly at

the first postsig() call, but not always held at the second place,
resulting in an occassional panic.
This commit is contained in:
Matthew Dillon 2001-07-04 15:36:30 +00:00
parent e3718e310c
commit 085be199c6

View File

@ -91,9 +91,11 @@ userret(p, frame, oticks)
mi_switch();
mtx_unlock_spin(&sched_lock);
PICKUP_GIANT();
mtx_lock(&Giant);
PROC_LOCK(p);
while ((sig = CURSIG(p)) != 0)
postsig(sig);
mtx_unlock(&Giant);
mtx_lock_spin(&sched_lock);
PROC_UNLOCK_NOSWITCH(p);
}