Trapsignal() calls kern_sigprocmask() when delivering catched signal

with proc lock held.

Reported and tested by:	Mykola Dzham  freebsd at levsha org ua
MFC after:	1 month
This commit is contained in:
Konstantin Belousov 2009-10-29 14:34:24 +00:00
parent d8cd25d022
commit 8084540253

View file

@ -1863,7 +1863,8 @@ trapsignal(struct thread *td, ksiginfo_t *ksi)
if (!SIGISMEMBER(ps->ps_signodefer, sig)) {
SIGEMPTYSET(mask);
SIGADDSET(mask, sig);
kern_sigprocmask(td, SIG_BLOCK, &mask, NULL, 0);
kern_sigprocmask(td, SIG_BLOCK, &mask, NULL,
SIGPROCMASK_PROC_LOCKED);
}
if (SIGISMEMBER(ps->ps_sigreset, sig)) {
/*