From 8084540253f5ddbef26a080561df2b6f8c24292f Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Thu, 29 Oct 2009 14:34:24 +0000 Subject: [PATCH] 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 --- sys/kern/kern_sig.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index d0249f517db..7f5cfa32ad8 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -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)) { /*