diff options
Diffstat (limited to 'sys/i386/linux/linux_sysvec.c')
-rw-r--r-- | sys/i386/linux/linux_sysvec.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/i386/linux/linux_sysvec.c b/sys/i386/linux/linux_sysvec.c index fbb6d6f..306b411 100644 --- a/sys/i386/linux/linux_sysvec.c +++ b/sys/i386/linux/linux_sysvec.c @@ -215,6 +215,7 @@ linux_rt_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) struct linux_rt_sigframe *fp, frame; int oonstack; + PROC_LOCK_ASSERT(p, MA_OWNED); regs = p->p_frame; oonstack = sigonstack(regs->tf_esp); @@ -226,7 +227,6 @@ linux_rt_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) /* * Allocate space for the signal handler context. */ - PROC_LOCK(p); if ((p->p_flag & P_ALTSTACK) && !oonstack && SIGISMEMBER(p->p_sigacts->ps_sigonstack, sig)) { fp = (struct linux_rt_sigframe *)(p->p_sigstk.ss_sp + @@ -258,7 +258,6 @@ linux_rt_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) fp, oonstack); #endif psignal(p, SIGILL); - PROC_UNLOCK(p); return; } @@ -343,6 +342,7 @@ linux_rt_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) regs->tf_es = _udatasel; regs->tf_fs = _udatasel; regs->tf_ss = _udatasel; + PROC_LOCK(p); } |