summaryrefslogtreecommitdiffstats
path: root/sys/alpha/osf1
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2001-09-06 22:20:41 +0000
committerjhb <jhb@FreeBSD.org>2001-09-06 22:20:41 +0000
commit054237d0bedad367db7ff79d400580da3e2f908f (patch)
tree81a6a9426eb4bd4704877e5d2c62645d4c91f07e /sys/alpha/osf1
parentfc76d31ce4a861706e4b49312b7a2f88a61bd53d (diff)
downloadFreeBSD-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.c4
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);
}
OpenPOWER on IntegriCloud