diff options
author | jhb <jhb@FreeBSD.org> | 2001-09-06 22:20:41 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2001-09-06 22:20:41 +0000 |
commit | 054237d0bedad367db7ff79d400580da3e2f908f (patch) | |
tree | 81a6a9426eb4bd4704877e5d2c62645d4c91f07e /sys/alpha/osf1 | |
parent | fc76d31ce4a861706e4b49312b7a2f88a61bd53d (diff) | |
download | FreeBSD-src-054237d0bedad367db7ff79d400580da3e2f908f.zip FreeBSD-src-054237d0bedad367db7ff79d400580da3e2f908f.tar.gz |
Call sendsig() with the proc lock held and return with it held.
Diffstat (limited to 'sys/alpha/osf1')
-rw-r--r-- | sys/alpha/osf1/osf1_signal.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/alpha/osf1/osf1_signal.c b/sys/alpha/osf1/osf1_signal.c index 66aa3a9..b35acad 100644 --- a/sys/alpha/osf1/osf1_signal.c +++ b/sys/alpha/osf1/osf1_signal.c @@ -585,7 +585,7 @@ osf1_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) struct sigacts *psp; p = curproc; - PROC_LOCK(p); + PROC_LOCK_ASSERT(p, MA_OWNED); psp = p->p_sigacts; frame = p->p_frame; @@ -620,7 +620,6 @@ osf1_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) SIGDELSET(p->p_sigcatch, SIGILL); SIGDELSET(p->p_sigmask, SIGILL); psignal(p, SIGILL); - PROC_UNLOCK(p); return; } @@ -674,6 +673,7 @@ osf1_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) frame->tf_regs[FRAME_A3] = (u_int64_t)catcher; /* a3 is pv */ frame->tf_regs[FRAME_FLAGS] = 0; /* full restore */ alpha_pal_wrusp((unsigned long)sip); + PROC_LOCK(p); } |