diff options
author | jhb <jhb@FreeBSD.org> | 2003-04-18 20:09:04 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2003-04-18 20:09:04 +0000 |
commit | 5bc80dc230e9205f0634c3ad9e2538984234d26a (patch) | |
tree | 760223efaf6c7bd5f6cfc5739f6477c0669a96df /sys/alpha | |
parent | 9abedb69656d2f3214f026dc987e697bc7a6047d (diff) | |
download | FreeBSD-src-5bc80dc230e9205f0634c3ad9e2538984234d26a.zip FreeBSD-src-5bc80dc230e9205f0634c3ad9e2538984234d26a.tar.gz |
Hold the proc lock for curproc around sigonstack().
Diffstat (limited to 'sys/alpha')
-rw-r--r-- | sys/alpha/alpha/machdep.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/alpha/alpha/machdep.c b/sys/alpha/alpha/machdep.c index 50627d9..c7e8c8c 100644 --- a/sys/alpha/alpha/machdep.c +++ b/sys/alpha/alpha/machdep.c @@ -1132,11 +1132,11 @@ osendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) td = curthread; p = td->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); frame = td->td_frame; oonstack = sigonstack(alpha_pal_rdusp()); fsize = sizeof ksi; rndfsize = ((fsize + 15) / 16) * 16; - PROC_LOCK_ASSERT(p, MA_OWNED); psp = p->p_sigacts; /* @@ -1993,7 +1993,9 @@ get_mcontext(struct thread *td, mcontext_t *mcp) mcp->mc_regs[FRAME_SP] = alpha_pal_rdusp(); mcp->mc_format = _MC_REV0_TRAPFRAME; + PROC_LOCK(curthread->td_proc); mcp->mc_onstack = sigonstack(alpha_pal_rdusp()) ? 1 : 0; + PROC_UNLOCK(curthread->td_proc); get_fpcontext(td, mcp); return (0); } |