summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorPhilip Guenthe <guenther@cvs.openbsd.org>2011-07-05 04:48:03 +0000
committerPhilip Guenthe <guenther@cvs.openbsd.org>2011-07-05 04:48:03 +0000
commit0e36778a06f5746ef60cadc41c445d6f5b6cc647 (patch)
tree28f4fa5e7600b312b1d6084db8548e11c7f9d783 /sys/arch
parenta7942e7ec8d68c52b4e9833fffb6c7810fde7f15 (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.c16
-rw-r--r--sys/arch/amd64/amd64/machdep.c14
-rw-r--r--sys/arch/arm/arm/sig_machdep.c19
-rw-r--r--sys/arch/hp300/hp300/trap.c6
-rw-r--r--sys/arch/hppa/hppa/machdep.c14
-rw-r--r--sys/arch/hppa64/hppa64/machdep.c14
-rw-r--r--sys/arch/i386/i386/linux_machdep.c14
-rw-r--r--sys/arch/i386/i386/machdep.c14
-rw-r--r--sys/arch/i386/i386/vm86.c4
-rw-r--r--sys/arch/m68k/m68k/sig_machdep.c16
-rw-r--r--sys/arch/m88k/m88k/sig_machdep.c18
-rw-r--r--sys/arch/mac68k/mac68k/trap.c6
-rw-r--r--sys/arch/macppc/macppc/machdep.c16
-rw-r--r--sys/arch/mips64/mips64/sendsig.c18
-rw-r--r--sys/arch/mvme68k/mvme68k/trap.c6
-rw-r--r--sys/arch/mvmeppc/mvmeppc/machdep.c16
-rw-r--r--sys/arch/sh/sh/sh_machdep.c22
-rw-r--r--sys/arch/socppc/socppc/machdep.c16
-rw-r--r--sys/arch/solbourne/solbourne/machdep.c16
-rw-r--r--sys/arch/sparc/sparc/machdep.c16
-rw-r--r--sys/arch/sparc64/sparc64/machdep.c16
-rw-r--r--sys/arch/vax/vax/machdep.c14
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;