diff options
author | Philip Guenthe <guenther@cvs.openbsd.org> | 2011-07-05 04:48:03 +0000 |
---|---|---|
committer | Philip Guenthe <guenther@cvs.openbsd.org> | 2011-07-05 04:48:03 +0000 |
commit | 0e36778a06f5746ef60cadc41c445d6f5b6cc647 (patch) | |
tree | 28f4fa5e7600b312b1d6084db8548e11c7f9d783 /sys/arch | |
parent | a7942e7ec8d68c52b4e9833fffb6c7810fde7f15 (diff) |
Recommit the reverted sigacts change now that the NFS use-after-free
problem has been tracked down. This fixes the sharing of the signal
handling state: shared bits go in sigacts, per-rthread bits goes in
struct proc.
ok deraadt@
Diffstat (limited to 'sys/arch')
-rw-r--r-- | sys/arch/alpha/alpha/machdep.c | 16 | ||||
-rw-r--r-- | sys/arch/amd64/amd64/machdep.c | 14 | ||||
-rw-r--r-- | sys/arch/arm/arm/sig_machdep.c | 19 | ||||
-rw-r--r-- | sys/arch/hp300/hp300/trap.c | 6 | ||||
-rw-r--r-- | sys/arch/hppa/hppa/machdep.c | 14 | ||||
-rw-r--r-- | sys/arch/hppa64/hppa64/machdep.c | 14 | ||||
-rw-r--r-- | sys/arch/i386/i386/linux_machdep.c | 14 | ||||
-rw-r--r-- | sys/arch/i386/i386/machdep.c | 14 | ||||
-rw-r--r-- | sys/arch/i386/i386/vm86.c | 4 | ||||
-rw-r--r-- | sys/arch/m68k/m68k/sig_machdep.c | 16 | ||||
-rw-r--r-- | sys/arch/m88k/m88k/sig_machdep.c | 18 | ||||
-rw-r--r-- | sys/arch/mac68k/mac68k/trap.c | 6 | ||||
-rw-r--r-- | sys/arch/macppc/macppc/machdep.c | 16 | ||||
-rw-r--r-- | sys/arch/mips64/mips64/sendsig.c | 18 | ||||
-rw-r--r-- | sys/arch/mvme68k/mvme68k/trap.c | 6 | ||||
-rw-r--r-- | sys/arch/mvmeppc/mvmeppc/machdep.c | 16 | ||||
-rw-r--r-- | sys/arch/sh/sh/sh_machdep.c | 22 | ||||
-rw-r--r-- | sys/arch/socppc/socppc/machdep.c | 16 | ||||
-rw-r--r-- | sys/arch/solbourne/solbourne/machdep.c | 16 | ||||
-rw-r--r-- | sys/arch/sparc/sparc/machdep.c | 16 | ||||
-rw-r--r-- | sys/arch/sparc64/sparc64/machdep.c | 16 | ||||
-rw-r--r-- | sys/arch/vax/vax/machdep.c | 14 |
22 files changed, 155 insertions, 156 deletions
diff --git a/sys/arch/alpha/alpha/machdep.c b/sys/arch/alpha/alpha/machdep.c index 8cb988c406d..220379bbfe7 100644 --- a/sys/arch/alpha/alpha/machdep.c +++ b/sys/arch/alpha/alpha/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.133 2011/06/26 22:39:58 deraadt Exp $ */ +/* $OpenBSD: machdep.c,v 1.134 2011/07/05 04:48:01 guenther Exp $ */ /* $NetBSD: machdep.c,v 1.210 2000/06/01 17:12:38 thorpej Exp $ */ /*- @@ -1427,7 +1427,7 @@ sendsig(catcher, sig, mask, code, type, val) siginfo_t *sip, ksi; frame = p->p_md.md_tf; - oonstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + oonstack = p->p_sigstk.ss_flags & SS_ONSTACK; fsize = sizeof ksc; rndfsize = ((fsize + 15) / 16) * 16; kscsize = rndfsize; @@ -1443,11 +1443,11 @@ sendsig(catcher, sig, mask, code, type, val) * will fail if the process has not already allocated * the space with a `brk'. */ - if ((psp->ps_flags & SAS_ALTSTACK) && !oonstack && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !oonstack && (psp->ps_sigonstack & sigmask(sig))) { - scp = (struct sigcontext *)(psp->ps_sigstk.ss_sp + - psp->ps_sigstk.ss_size - rndfsize); - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + scp = (struct sigcontext *)(p->p_sigstk.ss_sp + + p->p_sigstk.ss_size - rndfsize); + p->p_sigstk.ss_flags |= SS_ONSTACK; } else scp = (struct sigcontext *)(alpha_pal_rdusp() - rndfsize); if ((u_long)scp <= USRSTACK - ptoa(p->p_vmspace->vm_ssize)) @@ -1580,9 +1580,9 @@ sys_sigreturn(p, v, retval) * Restore the user-supplied information */ if (ksc.sc_onstack) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = ksc.sc_mask &~ sigcantmask; p->p_md.md_tf->tf_regs[FRAME_PC] = ksc.sc_pc; diff --git a/sys/arch/amd64/amd64/machdep.c b/sys/arch/amd64/amd64/machdep.c index d18fd2ed792..31572680850 100644 --- a/sys/arch/amd64/amd64/machdep.c +++ b/sys/arch/amd64/amd64/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.147 2011/07/04 15:54:24 guenther Exp $ */ +/* $OpenBSD: machdep.c,v 1.148 2011/07/05 04:48:01 guenther Exp $ */ /* $NetBSD: machdep.c,v 1.3 2003/05/07 22:58:18 fvdl Exp $ */ /*- @@ -548,15 +548,15 @@ sendsig(sig_t catcher, int sig, int mask, u_long code, int type, #endif bcopy(tf, &ksc, sizeof(*tf)); - ksc.sc_onstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + ksc.sc_onstack = p->p_sigstk.ss_flags & SS_ONSTACK; ksc.sc_mask = mask; ksc.sc_fpstate = NULL; /* Allocate space for the signal handler context. */ - if ((psp->ps_flags & SAS_ALTSTACK) && !ksc.sc_onstack && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !ksc.sc_onstack && (psp->ps_sigonstack & sigmask(sig))) { - sp = (register_t)psp->ps_sigstk.ss_sp + psp->ps_sigstk.ss_size; - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + sp = (register_t)p->p_sigstk.ss_sp + p->p_sigstk.ss_size; + p->p_sigstk.ss_flags |= SS_ONSTACK; } else sp = tf->tf_rsp - 128; @@ -665,9 +665,9 @@ sys_sigreturn(struct proc *p, void *v, register_t *retval) /* Restore signal stack. */ if (ksc.sc_onstack) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = ksc.sc_mask & ~sigcantmask; /* diff --git a/sys/arch/arm/arm/sig_machdep.c b/sys/arch/arm/arm/sig_machdep.c index 7181b17b47c..7516bd7a965 100644 --- a/sys/arch/arm/arm/sig_machdep.c +++ b/sys/arch/arm/arm/sig_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sig_machdep.c,v 1.5 2011/04/18 21:44:55 guenther Exp $ */ +/* $OpenBSD: sig_machdep.c,v 1.6 2011/07/05 04:48:01 guenther Exp $ */ /* $NetBSD: sig_machdep.c,v 1.22 2003/10/08 00:28:41 thorpej Exp $ */ /* @@ -87,7 +87,7 @@ sendsig(sig_t catcher, int sig, int returnmask, u_long code, int type, struct trapframe *tf; struct sigframe *fp, frame; struct sigacts *psp = p->p_sigacts; - int oonstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + int oonstack = p->p_sigstk.ss_flags & SS_ONSTACK; int onstack = 0; tf = process_frame(p); @@ -95,11 +95,11 @@ sendsig(sig_t catcher, int sig, int returnmask, u_long code, int type, /* Do we need to jump onto the signal stack? */ /* Allocate space for the signal handler context. */ - if ((psp->ps_flags & SAS_ALTSTACK) && !oonstack && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !oonstack && (psp->ps_sigonstack & sigmask(sig))) { onstack = 1; - fp = (struct sigframe *)((caddr_t)psp->ps_sigstk.ss_sp + - psp->ps_sigstk.ss_size); + fp = (struct sigframe *)((caddr_t)p->p_sigstk.ss_sp + + p->p_sigstk.ss_size); } else fp = (struct sigframe *)tf->tf_usr_sp; /* make room on the stack */ @@ -135,7 +135,7 @@ sendsig(sig_t catcher, int sig, int returnmask, u_long code, int type, frame.sf_sc.sc_spsr = tf->tf_spsr; /* Save signal stack. */ - frame.sf_sc.sc_onstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + frame.sf_sc.sc_onstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* Save signal mask. */ frame.sf_sc.sc_mask = returnmask; @@ -177,7 +177,7 @@ sendsig(sig_t catcher, int sig, int returnmask, u_long code, int type, /* Remember that we're now on the signal stack. */ if (onstack) - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; } #if 0 @@ -216,7 +216,6 @@ sys_sigreturn(struct proc *p, void *v, register_t *retval) } */ *uap = v; struct sigcontext *scp, context; struct trapframe *tf; - struct sigacts *psp = p->p_sigacts; /* * we do a rather scary test in userland @@ -270,9 +269,9 @@ sys_sigreturn(struct proc *p, void *v, register_t *retval) /* Restore signal stack. */ if (context.sc_onstack & SS_ONSTACK) - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - psp->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; /* Restore signal mask. */ #if 0 diff --git a/sys/arch/hp300/hp300/trap.c b/sys/arch/hp300/hp300/trap.c index da405ea6980..177c8c0d256 100644 --- a/sys/arch/hp300/hp300/trap.c +++ b/sys/arch/hp300/hp300/trap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: trap.c,v 1.58 2011/04/18 21:44:55 guenther Exp $ */ +/* $OpenBSD: trap.c,v 1.59 2011/07/05 04:48:01 guenther Exp $ */ /* $NetBSD: trap.c,v 1.57 1998/02/16 20:58:31 thorpej Exp $ */ /* @@ -347,8 +347,8 @@ dopanic: type |= T_USER; p->p_sigacts->ps_sigact[SIGILL] = SIG_DFL; i = sigmask(SIGILL); - p->p_sigignore &= ~i; - p->p_sigcatch &= ~i; + p->p_sigacts->ps_sigignore &= ~i; + p->p_sigacts->ps_sigcatch &= ~i; p->p_sigmask &= ~i; i = SIGILL; ucode = frame.f_format; /* XXX was ILL_RESAD_FAULT */ diff --git a/sys/arch/hppa/hppa/machdep.c b/sys/arch/hppa/hppa/machdep.c index 515bc2bc5fd..fc39086d591 100644 --- a/sys/arch/hppa/hppa/machdep.c +++ b/sys/arch/hppa/hppa/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.203 2011/06/26 22:39:59 deraadt Exp $ */ +/* $OpenBSD: machdep.c,v 1.204 2011/07/05 04:48:01 guenther Exp $ */ /* * Copyright (c) 1999-2003 Michael Shalayeff @@ -1187,15 +1187,15 @@ sendsig(sig_t catcher, int sig, int mask, u_long code, int type, /* Save the FPU context first. */ fpu_proc_save(p); - ksc.sc_onstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + ksc.sc_onstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* * Allocate space for the signal handler context. */ - if ((psp->ps_flags & SAS_ALTSTACK) && !ksc.sc_onstack && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !ksc.sc_onstack && (psp->ps_sigonstack & sigmask(sig))) { - scp = (register_t)psp->ps_sigstk.ss_sp; - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + scp = (register_t)p->p_sigstk.ss_sp; + p->p_sigstk.ss_flags |= SS_ONSTACK; } else scp = (tf->tf_sp + 63) & ~63; @@ -1319,9 +1319,9 @@ sys_sigreturn(struct proc *p, void *v, register_t *retval) return (EINVAL); if (ksc.sc_onstack) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = ksc.sc_mask &~ sigcantmask; tf->tf_t1 = ksc.sc_regs[0]; /* r22 */ diff --git a/sys/arch/hppa64/hppa64/machdep.c b/sys/arch/hppa64/hppa64/machdep.c index f52ca9c6b25..7ee3d978572 100644 --- a/sys/arch/hppa64/hppa64/machdep.c +++ b/sys/arch/hppa64/hppa64/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.38 2011/06/26 22:39:59 deraadt Exp $ */ +/* $OpenBSD: machdep.c,v 1.39 2011/07/05 04:48:01 guenther Exp $ */ /* * Copyright (c) 2005 Michael Shalayeff @@ -842,15 +842,15 @@ sendsig(sig_t catcher, int sig, int mask, u_long code, int type, /* Save the FPU context first. */ fpu_proc_save(p); - ksc.sc_onstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + ksc.sc_onstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* * Allocate space for the signal handler context. */ - if ((psp->ps_flags & SAS_ALTSTACK) && !ksc.sc_onstack && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !ksc.sc_onstack && (psp->ps_sigonstack & sigmask(sig))) { - scp = (register_t)psp->ps_sigstk.ss_sp; - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + scp = (register_t)p->p_sigstk.ss_sp; + p->p_sigstk.ss_flags |= SS_ONSTACK; } else scp = (tf->tf_sp + 63) & ~63; @@ -945,9 +945,9 @@ sys_sigreturn(struct proc *p, void *v, register_t *retval) return (EINVAL); if (ksc.sc_onstack) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = ksc.sc_mask &~ sigcantmask; tf->tf_sar = ksc.sc_regs[0]; diff --git a/sys/arch/i386/i386/linux_machdep.c b/sys/arch/i386/i386/linux_machdep.c index 1363e747c50..96b0ecb52e3 100644 --- a/sys/arch/i386/i386/linux_machdep.c +++ b/sys/arch/i386/i386/linux_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: linux_machdep.c,v 1.39 2011/04/18 21:44:55 guenther Exp $ */ +/* $OpenBSD: linux_machdep.c,v 1.40 2011/07/05 04:48:01 guenther Exp $ */ /* $NetBSD: linux_machdep.c,v 1.29 1996/05/03 19:42:11 christos Exp $ */ /* @@ -114,16 +114,16 @@ linux_sendsig(sig_t catcher, int sig, int mask, u_long code, int type, int oonstack; tf = p->p_md.md_regs; - oonstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + oonstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* * Allocate space for the signal handler context. */ - if ((psp->ps_flags & SAS_ALTSTACK) && !oonstack && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !oonstack && (psp->ps_sigonstack & sigmask(sig))) { - fp = (struct linux_sigframe *)((char *)psp->ps_sigstk.ss_sp + - psp->ps_sigstk.ss_size - sizeof(struct linux_sigframe)); - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + fp = (struct linux_sigframe *)((char *)p->p_sigstk.ss_sp + + p->p_sigstk.ss_size - sizeof(struct linux_sigframe)); + p->p_sigstk.ss_flags |= SS_ONSTACK; } else { fp = (struct linux_sigframe *)tf->tf_esp - 1; } @@ -257,7 +257,7 @@ linux_sys_sigreturn(struct proc *p, void *v, register_t *retval) tf->tf_esp = context.sc_esp_at_signal; tf->tf_ss = context.sc_ss; - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = context.sc_mask & ~sigcantmask; return (EJUSTRETURN); diff --git a/sys/arch/i386/i386/machdep.c b/sys/arch/i386/i386/machdep.c index 87625c0a146..6354e24b698 100644 --- a/sys/arch/i386/i386/machdep.c +++ b/sys/arch/i386/i386/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.504 2011/07/05 00:30:10 deraadt Exp $ */ +/* $OpenBSD: machdep.c,v 1.505 2011/07/05 04:48:01 guenther Exp $ */ /* $NetBSD: machdep.c,v 1.214 1996/11/10 03:16:17 thorpej Exp $ */ /*- @@ -2180,7 +2180,7 @@ sendsig(sig_t catcher, int sig, int mask, u_long code, int type, struct sigframe *fp, frame; struct sigacts *psp = p->p_sigacts; register_t sp; - int oonstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + int oonstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* * Build the argument list for the signal handler. @@ -2190,10 +2190,10 @@ sendsig(sig_t catcher, int sig, int mask, u_long code, int type, /* * Allocate space for the signal handler context. */ - if ((psp->ps_flags & SAS_ALTSTACK) && !oonstack && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !oonstack && (psp->ps_sigonstack & sigmask(sig))) { - sp = (long)psp->ps_sigstk.ss_sp + psp->ps_sigstk.ss_size; - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + sp = (long)p->p_sigstk.ss_sp + p->p_sigstk.ss_size; + p->p_sigstk.ss_flags |= SS_ONSTACK; } else sp = tf->tf_esp; @@ -2368,9 +2368,9 @@ sys_sigreturn(struct proc *p, void *v, register_t *retval) } if (context.sc_onstack & 01) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = context.sc_mask & ~sigcantmask; return (EJUSTRETURN); diff --git a/sys/arch/i386/i386/vm86.c b/sys/arch/i386/i386/vm86.c index 4ca36573bf4..f07226a8051 100644 --- a/sys/arch/i386/i386/vm86.c +++ b/sys/arch/i386/i386/vm86.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vm86.c,v 1.20 2011/04/18 21:44:55 guenther Exp $ */ +/* $OpenBSD: vm86.c,v 1.21 2011/07/05 04:48:01 guenther Exp $ */ /* $NetBSD: vm86.c,v 1.15 1996/05/03 19:42:33 christos Exp $ */ /*- @@ -427,7 +427,7 @@ i386_vm86(struct proc *p, char *args, register_t *retval) #undef DOREG /* Going into vm86 mode jumps off the signal stack. */ - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; set_vflags(p, vm86s.regs.vmsc.sc_eflags | PSL_VM); diff --git a/sys/arch/m68k/m68k/sig_machdep.c b/sys/arch/m68k/m68k/sig_machdep.c index 512677e856c..9e249754ee8 100644 --- a/sys/arch/m68k/m68k/sig_machdep.c +++ b/sys/arch/m68k/m68k/sig_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sig_machdep.c,v 1.24 2011/04/18 21:44:55 guenther Exp $ */ +/* $OpenBSD: sig_machdep.c,v 1.25 2011/07/05 04:48:01 guenther Exp $ */ /* $NetBSD: sig_machdep.c,v 1.3 1997/04/30 23:28:03 gwr Exp $ */ /* @@ -135,7 +135,7 @@ sendsig(catcher, sig, mask, code, type, val) frame = (struct frame *)p->p_md.md_regs; ft = frame->f_format; - oonstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + oonstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* * Allocate and validate space for the signal handler @@ -145,11 +145,11 @@ sendsig(catcher, sig, mask, code, type, val) * the space with a `brk'. */ fsize = sizeof(struct sigframe); - if ((psp->ps_flags & SAS_ALTSTACK) && !oonstack && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !oonstack && (psp->ps_sigonstack & sigmask(sig))) { - fp = (struct sigframe *)(psp->ps_sigstk.ss_sp + - psp->ps_sigstk.ss_size - fsize); - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + fp = (struct sigframe *)(p->p_sigstk.ss_sp + + p->p_sigstk.ss_size - fsize); + p->p_sigstk.ss_flags |= SS_ONSTACK; } else fp = (struct sigframe *)(frame->f_regs[SP] - fsize); if ((unsigned)fp <= USRSTACK - ptoa(p->p_vmspace->vm_ssize)) @@ -321,9 +321,9 @@ sys_sigreturn(p, v, retval) * Restore the user supplied information */ if (scp->sc_onstack & 1) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = scp->sc_mask &~ sigcantmask; frame = (struct frame *) p->p_md.md_regs; frame->f_regs[SP] = scp->sc_sp; diff --git a/sys/arch/m88k/m88k/sig_machdep.c b/sys/arch/m88k/m88k/sig_machdep.c index 49954336de8..4e3e88b2f91 100644 --- a/sys/arch/m88k/m88k/sig_machdep.c +++ b/sys/arch/m88k/m88k/sig_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sig_machdep.c,v 1.12 2011/04/18 21:44:55 guenther Exp $ */ +/* $OpenBSD: sig_machdep.c,v 1.13 2011/07/05 04:48:01 guenther Exp $ */ /* * Copyright (c) 1998, 1999, 2000, 2001 Steve Murphree, Jr. * Copyright (c) 1996 Nivas Madhur @@ -95,7 +95,7 @@ sendsig(sig_t catcher, int sig, int mask, unsigned long code, int type, vaddr_t addr; tf = p->p_md.md_tf; - oonstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + oonstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* * Allocate and validate space for the signal handler * context. Note that if the stack is in data space, the @@ -104,12 +104,12 @@ sendsig(sig_t catcher, int sig, int mask, unsigned long code, int type, * the space with a `brk'. */ fsize = sizeof(struct sigframe); - if ((psp->ps_flags & SAS_ALTSTACK) && - (psp->ps_sigstk.ss_flags & SS_ONSTACK) == 0 && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && + (p->p_sigstk.ss_flags & SS_ONSTACK) == 0 && (psp->ps_sigonstack & sigmask(sig))) { - fp = (struct sigframe *)(psp->ps_sigstk.ss_sp + - psp->ps_sigstk.ss_size - fsize); - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + fp = (struct sigframe *)(p->p_sigstk.ss_sp + + p->p_sigstk.ss_size - fsize); + p->p_sigstk.ss_flags |= SS_ONSTACK; } else fp = (struct sigframe *)(tf->tf_r[31] - fsize); @@ -222,9 +222,9 @@ sys_sigreturn(struct proc *p, void *v, register_t *retval) * Restore the user supplied information */ if (scp->sc_onstack & SS_ONSTACK) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = scp->sc_mask & ~sigcantmask; /* diff --git a/sys/arch/mac68k/mac68k/trap.c b/sys/arch/mac68k/mac68k/trap.c index b3706c715b8..59bf6afbb93 100644 --- a/sys/arch/mac68k/mac68k/trap.c +++ b/sys/arch/mac68k/mac68k/trap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: trap.c,v 1.59 2011/04/18 21:44:55 guenther Exp $ */ +/* $OpenBSD: trap.c,v 1.60 2011/07/05 04:48:01 guenther Exp $ */ /* $NetBSD: trap.c,v 1.68 1998/12/22 08:47:07 scottr Exp $ */ /* @@ -402,8 +402,8 @@ copyfault: type |= T_USER; p->p_sigacts->ps_sigact[SIGILL] = SIG_DFL; i = sigmask(SIGILL); - p->p_sigignore &= ~i; - p->p_sigcatch &= ~i; + p->p_sigacts->ps_sigignore &= ~i; + p->p_sigacts->ps_sigcatch &= ~i; p->p_sigmask &= ~i; i = SIGILL; ucode = frame.f_format; /* XXX was ILL_RESAD_FAULT */ diff --git a/sys/arch/macppc/macppc/machdep.c b/sys/arch/macppc/macppc/machdep.c index 82f70e5e70b..9383af73f2c 100644 --- a/sys/arch/macppc/macppc/machdep.c +++ b/sys/arch/macppc/macppc/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.129 2011/06/27 04:12:11 deraadt Exp $ */ +/* $OpenBSD: machdep.c,v 1.130 2011/07/05 04:48:01 guenther Exp $ */ /* $NetBSD: machdep.c,v 1.4 1996/10/16 19:33:11 ws Exp $ */ /* @@ -563,17 +563,17 @@ sendsig(sig_t catcher, int sig, int mask, u_long code, int type, frame.sf_signum = sig; tf = trapframe(p); - oldonstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + oldonstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* * Allocate stack space for signal handler. */ - if ((psp->ps_flags & SAS_ALTSTACK) + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !oldonstack && (psp->ps_sigonstack & sigmask(sig))) { - fp = (struct sigframe *)(psp->ps_sigstk.ss_sp - + psp->ps_sigstk.ss_size); - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + fp = (struct sigframe *)(p->p_sigstk.ss_sp + + p->p_sigstk.ss_size); + p->p_sigstk.ss_flags |= SS_ONSTACK; } else fp = (struct sigframe *)tf->fixreg[1]; @@ -629,9 +629,9 @@ sys_sigreturn(struct proc *p, void *v, register_t *retval) return EINVAL; bcopy(&sc.sc_frame, tf, sizeof *tf); if (sc.sc_onstack & 1) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = sc.sc_mask & ~sigcantmask; return EJUSTRETURN; } diff --git a/sys/arch/mips64/mips64/sendsig.c b/sys/arch/mips64/mips64/sendsig.c index 222fbdff635..d0523c26276 100644 --- a/sys/arch/mips64/mips64/sendsig.c +++ b/sys/arch/mips64/mips64/sendsig.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sendsig.c,v 1.16 2011/04/18 21:44:55 guenther Exp $ */ +/* $OpenBSD: sendsig.c,v 1.17 2011/07/05 04:48:01 guenther Exp $ */ /* * Copyright (c) 1990 The Regents of the University of California. @@ -115,7 +115,7 @@ sendsig(catcher, sig, mask, code, type, val) struct sigcontext ksc; regs = p->p_md.md_regs; - oonstack = psp->ps_sigstk.ss_flags & SA_ONSTACK; + oonstack = p->p_sigstk.ss_flags & SA_ONSTACK; /* * Allocate and validate space for the signal handler * context. Note that if the stack is in data space, the @@ -126,12 +126,12 @@ sendsig(catcher, sig, mask, code, type, val) fsize = sizeof(struct sigframe); if (!(psp->ps_siginfo & sigmask(sig))) fsize -= sizeof(siginfo_t); - if ((psp->ps_flags & SAS_ALTSTACK) && - (psp->ps_sigstk.ss_flags & SA_ONSTACK) == 0 && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && + (p->p_sigstk.ss_flags & SA_ONSTACK) == 0 && (psp->ps_sigonstack & sigmask(sig))) { - fp = (struct sigframe *)(psp->ps_sigstk.ss_sp + - psp->ps_sigstk.ss_size - fsize); - psp->ps_sigstk.ss_flags |= SA_ONSTACK; + fp = (struct sigframe *)(p->p_sigstk.ss_sp + + p->p_sigstk.ss_size - fsize); + p->p_sigstk.ss_flags |= SA_ONSTACK; } else fp = (struct sigframe *)(regs->sp - fsize); if ((vaddr_t)fp <= USRSTACK - ptoa(p->p_vmspace->vm_ssize)) @@ -255,9 +255,9 @@ sys_sigreturn(p, v, retval) * Restore the user supplied information */ if (scp->sc_onstack & SA_ONSTACK) - p->p_sigacts->ps_sigstk.ss_flags |= SA_ONSTACK; + p->p_sigstk.ss_flags |= SA_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SA_ONSTACK; + p->p_sigstk.ss_flags &= ~SA_ONSTACK; p->p_sigmask = scp->sc_mask &~ sigcantmask; regs->pc = scp->sc_pc; regs->mullo = scp->mullo; diff --git a/sys/arch/mvme68k/mvme68k/trap.c b/sys/arch/mvme68k/mvme68k/trap.c index cee85e6fb07..17d55cb7b99 100644 --- a/sys/arch/mvme68k/mvme68k/trap.c +++ b/sys/arch/mvme68k/mvme68k/trap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: trap.c,v 1.73 2011/04/18 21:44:55 guenther Exp $ */ +/* $OpenBSD: trap.c,v 1.74 2011/07/05 04:48:01 guenther Exp $ */ /* * Copyright (c) 1995 Theo de Raadt @@ -286,8 +286,8 @@ copyfault: type |= T_USER; p->p_sigacts->ps_sigact[SIGILL] = SIG_DFL; i = sigmask(SIGILL); - p->p_sigignore &= ~i; - p->p_sigcatch &= ~i; + p->p_sigacts->ps_sigignore &= ~i; + p->p_sigacts->ps_sigcatch &= ~i; p->p_sigmask &= ~i; i = SIGILL; ucode = frame.f_format; /* XXX was ILL_RESAD_FAULT */ diff --git a/sys/arch/mvmeppc/mvmeppc/machdep.c b/sys/arch/mvmeppc/mvmeppc/machdep.c index a723f31d488..e5a2f77c2da 100644 --- a/sys/arch/mvmeppc/mvmeppc/machdep.c +++ b/sys/arch/mvmeppc/mvmeppc/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.68 2011/06/26 22:40:00 deraadt Exp $ */ +/* $OpenBSD: machdep.c,v 1.69 2011/07/05 04:48:01 guenther Exp $ */ /* $NetBSD: machdep.c,v 1.4 1996/10/16 19:33:11 ws Exp $ */ /* @@ -474,17 +474,17 @@ sendsig(catcher, sig, mask, code, type, val) frame.sf_signum = sig; tf = trapframe(p); - oldonstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + oldonstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* * Allocate stack space for signal handler. */ - if ((psp->ps_flags & SAS_ALTSTACK) + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !oldonstack && (psp->ps_sigonstack & sigmask(sig))) { - fp = (struct sigframe *)(psp->ps_sigstk.ss_sp - + psp->ps_sigstk.ss_size); - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + fp = (struct sigframe *)(p->p_sigstk.ss_sp + + p->p_sigstk.ss_size); + p->p_sigstk.ss_flags |= SS_ONSTACK; } else fp = (struct sigframe *)tf->fixreg[1]; @@ -541,9 +541,9 @@ sys_sigreturn(p, v, retval) return EINVAL; bcopy(&sc.sc_frame, tf, sizeof *tf); if (sc.sc_onstack & 1) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = sc.sc_mask & ~sigcantmask; return EJUSTRETURN; } diff --git a/sys/arch/sh/sh/sh_machdep.c b/sys/arch/sh/sh/sh_machdep.c index f1e52fa8821..7d89f618c31 100644 --- a/sys/arch/sh/sh/sh_machdep.c +++ b/sys/arch/sh/sh/sh_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sh_machdep.c,v 1.30 2011/06/05 19:41:10 deraadt Exp $ */ +/* $OpenBSD: sh_machdep.c,v 1.31 2011/07/05 04:48:01 guenther Exp $ */ /* $NetBSD: sh3_machdep.c,v 1.59 2006/03/04 01:13:36 uwe Exp $ */ /* @@ -460,16 +460,16 @@ sendsig(sig_t catcher, int sig, int mask, u_long code, int type, struct proc *p = curproc; struct sigframe *fp, frame; struct trapframe *tf = p->p_md.md_regs; - struct sigacts *ps = p->p_sigacts; + struct sigacts *psp = p->p_sigacts; siginfo_t *sip; int onstack; - onstack = ps->ps_sigstk.ss_flags & SS_ONSTACK; - if ((ps->ps_flags & SAS_ALTSTACK) && onstack == 0 && - (ps->ps_sigonstack & sigmask(sig))) { - fp = (struct sigframe *)((vaddr_t)ps->ps_sigstk.ss_sp + - ps->ps_sigstk.ss_size); - ps->ps_sigstk.ss_flags |= SS_ONSTACK; + onstack = p->p_sigstk.ss_flags & SS_ONSTACK; + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && onstack == 0 && + (psp->ps_sigonstack & sigmask(sig))) { + fp = (struct sigframe *)((vaddr_t)p->p_sigstk.ss_sp + + p->p_sigstk.ss_size); + p->p_sigstk.ss_flags |= SS_ONSTACK; } else fp = (void *)p->p_md.md_regs->tf_r15; --fp; @@ -477,7 +477,7 @@ sendsig(sig_t catcher, int sig, int mask, u_long code, int type, bzero(&frame, sizeof(frame)); - if (ps->ps_siginfo & sigmask(sig)) { + if (psp->ps_siginfo & sigmask(sig)) { initsiginfo(&frame.sf_si, sig, code, type, val); sip = &fp->sf_si; } else @@ -597,9 +597,9 @@ sys_sigreturn(struct proc *p, void *v, register_t *retval) /* Restore signal stack. */ if (context.sc_onstack) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; /* Restore signal mask. */ p->p_sigmask = context.sc_mask & ~sigcantmask; diff --git a/sys/arch/socppc/socppc/machdep.c b/sys/arch/socppc/socppc/machdep.c index 7f0a6644adb..665343b48af 100644 --- a/sys/arch/socppc/socppc/machdep.c +++ b/sys/arch/socppc/socppc/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.31 2011/06/26 22:40:00 deraadt Exp $ */ +/* $OpenBSD: machdep.c,v 1.32 2011/07/05 04:48:02 guenther Exp $ */ /* $NetBSD: machdep.c,v 1.4 1996/10/16 19:33:11 ws Exp $ */ /* @@ -888,17 +888,17 @@ sendsig(sig_t catcher, int sig, int mask, u_long code, int type, frame.sf_signum = sig; tf = trapframe(p); - oldonstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + oldonstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* * Allocate stack space for signal handler. */ - if ((psp->ps_flags & SAS_ALTSTACK) + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !oldonstack && (psp->ps_sigonstack & sigmask(sig))) { - fp = (struct sigframe *)(psp->ps_sigstk.ss_sp - + psp->ps_sigstk.ss_size); - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + fp = (struct sigframe *)(p->p_sigstk.ss_sp + + p->p_sigstk.ss_size); + p->p_sigstk.ss_flags |= SS_ONSTACK; } else fp = (struct sigframe *)tf->fixreg[1]; @@ -952,9 +952,9 @@ sys_sigreturn(struct proc *p, void *v, register_t *retval) return EINVAL; bcopy(&sc.sc_frame, tf, sizeof *tf); if (sc.sc_onstack & 1) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = sc.sc_mask & ~sigcantmask; return EJUSTRETURN; } diff --git a/sys/arch/solbourne/solbourne/machdep.c b/sys/arch/solbourne/solbourne/machdep.c index 8094212c335..d0a3ffe2d4a 100644 --- a/sys/arch/solbourne/solbourne/machdep.c +++ b/sys/arch/solbourne/solbourne/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.20 2011/06/26 22:40:00 deraadt Exp $ */ +/* $OpenBSD: machdep.c,v 1.21 2011/07/05 04:48:02 guenther Exp $ */ /* OpenBSD: machdep.c,v 1.105 2005/04/11 15:13:01 deraadt Exp */ /* @@ -369,16 +369,16 @@ sendsig(catcher, sig, mask, code, type, val) tf = p->p_md.md_tf; oldsp = tf->tf_out[6]; - oonstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + oonstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* * Compute new user stack addresses, subtract off * one signal frame, and align. */ - if ((psp->ps_flags & SAS_ALTSTACK) && !oonstack && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !oonstack && (psp->ps_sigonstack & sigmask(sig))) { - fp = (struct sigframe *)(psp->ps_sigstk.ss_sp + - psp->ps_sigstk.ss_size); - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + fp = (struct sigframe *)(p->p_sigstk.ss_sp + + p->p_sigstk.ss_size); + p->p_sigstk.ss_flags |= SS_ONSTACK; } else fp = (struct sigframe *)oldsp; fp = (struct sigframe *)((int)(fp - 1) & ~7); @@ -509,9 +509,9 @@ sys_sigreturn(p, v, retval) tf->tf_out[0] = ksc.sc_o0; tf->tf_out[6] = ksc.sc_sp; if (ksc.sc_onstack & 1) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = ksc.sc_mask & ~sigcantmask; return (EJUSTRETURN); } diff --git a/sys/arch/sparc/sparc/machdep.c b/sys/arch/sparc/sparc/machdep.c index 4cfb2f1a775..379b7d50c03 100644 --- a/sys/arch/sparc/sparc/machdep.c +++ b/sys/arch/sparc/sparc/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.136 2011/06/26 22:40:00 deraadt Exp $ */ +/* $OpenBSD: machdep.c,v 1.137 2011/07/05 04:48:02 guenther Exp $ */ /* $NetBSD: machdep.c,v 1.85 1997/09/12 08:55:02 pk Exp $ */ /* @@ -382,16 +382,16 @@ sendsig(catcher, sig, mask, code, type, val) tf = p->p_md.md_tf; oldsp = tf->tf_out[6]; - oonstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + oonstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* * Compute new user stack addresses, subtract off * one signal frame, and align. */ - if ((psp->ps_flags & SAS_ALTSTACK) && !oonstack && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !oonstack && (psp->ps_sigonstack & sigmask(sig))) { - fp = (struct sigframe *)(psp->ps_sigstk.ss_sp + - psp->ps_sigstk.ss_size); - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + fp = (struct sigframe *)(p->p_sigstk.ss_sp + + p->p_sigstk.ss_size); + p->p_sigstk.ss_flags |= SS_ONSTACK; } else fp = (struct sigframe *)oldsp; fp = (struct sigframe *)((int)(fp - 1) & ~7); @@ -522,9 +522,9 @@ sys_sigreturn(p, v, retval) tf->tf_out[0] = ksc.sc_o0; tf->tf_out[6] = ksc.sc_sp; if (ksc.sc_onstack & 1) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; p->p_sigmask = ksc.sc_mask & ~sigcantmask; return (EJUSTRETURN); } diff --git a/sys/arch/sparc64/sparc64/machdep.c b/sys/arch/sparc64/sparc64/machdep.c index 024f96b3a08..2130f5d4818 100644 --- a/sys/arch/sparc64/sparc64/machdep.c +++ b/sys/arch/sparc64/sparc64/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.135 2011/06/26 22:40:00 deraadt Exp $ */ +/* $OpenBSD: machdep.c,v 1.136 2011/07/05 04:48:02 guenther Exp $ */ /* $NetBSD: machdep.c,v 1.108 2001/07/24 19:30:14 eeh Exp $ */ /*- @@ -442,13 +442,13 @@ sendsig(catcher, sig, mask, code, type, val) * Compute new user stack addresses, subtract off * one signal frame, and align. */ - onstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + onstack = p->p_sigstk.ss_flags & SS_ONSTACK; - if ((psp->ps_flags & SAS_ALTSTACK) && !onstack && + if ((p->p_sigstk.ss_flags & SS_DISABLE) == 0 && !onstack && (psp->ps_sigonstack & sigmask(sig))) { - fp = (struct sigframe *)((caddr_t)psp->ps_sigstk.ss_sp + - psp->ps_sigstk.ss_size); - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + fp = (struct sigframe *)((caddr_t)p->p_sigstk.ss_sp + + p->p_sigstk.ss_size); + p->p_sigstk.ss_flags |= SS_ONSTACK; } else fp = (struct sigframe *)oldsp; /* Allocate an aligned sigframe */ @@ -594,9 +594,9 @@ sys_sigreturn(p, v, retval) /* Restore signal stack. */ if (sc.sc_onstack & SS_ONSTACK) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; /* Restore signal mask. */ p->p_sigmask = scp->sc_mask & ~sigcantmask; diff --git a/sys/arch/vax/vax/machdep.c b/sys/arch/vax/vax/machdep.c index 3dc02eda7c2..d8064add2f6 100644 --- a/sys/arch/vax/vax/machdep.c +++ b/sys/arch/vax/vax/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.115 2011/06/26 22:40:00 deraadt Exp $ */ +/* $OpenBSD: machdep.c,v 1.116 2011/07/05 04:48:02 guenther Exp $ */ /* $NetBSD: machdep.c,v 1.108 2000/09/13 15:00:23 thorpej Exp $ */ /* @@ -399,9 +399,9 @@ sys_sigreturn(p, v, retval) return (EINVAL); } if (ksc.sc_onstack & 01) - p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; else - p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; + p->p_sigstk.ss_flags &= ~SS_ONSTACK; /* Restore signal mask. */ p->p_sigmask = ksc.sc_mask & ~sigcantmask; @@ -457,11 +457,11 @@ sendsig(catcher, sig, mask, code, type, val) int onstack; syscf = p->p_addr->u_pcb.framep; - onstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + onstack = p->p_sigstk.ss_flags & SS_ONSTACK; /* Allocate space for the signal handler context. */ if (onstack) - cursp = ((int)psp->ps_sigstk.ss_sp + psp->ps_sigstk.ss_size); + cursp = ((int)p->p_sigstk.ss_sp + p->p_sigstk.ss_size); else cursp = syscf->sp; @@ -479,7 +479,7 @@ sendsig(catcher, sig, mask, code, type, val) initsiginfo(&gsigf.sf_si, sig, code, type, val); } - gsigf.sf_sc.sc_onstack = psp->ps_sigstk.ss_flags & SS_ONSTACK; + gsigf.sf_sc.sc_onstack = p->p_sigstk.ss_flags & SS_ONSTACK; gsigf.sf_sc.sc_mask = mask; gsigf.sf_sc.sc_sp = syscf->sp; gsigf.sf_sc.sc_fp = syscf->fp; @@ -514,7 +514,7 @@ sendsig(catcher, sig, mask, code, type, val) syscf->ap = (unsigned)sigf + offsetof(struct sigframe, sf_pc); if (onstack) - psp->ps_sigstk.ss_flags |= SS_ONSTACK; + p->p_sigstk.ss_flags |= SS_ONSTACK; } int waittime = -1; |