summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2002-08-29 01:55:24 +0000
committerjake <jake@FreeBSD.org>2002-08-29 01:55:24 +0000
commit667e68fd2fbe1cbd8c3b65520a0b298c3adfd3ea (patch)
treebb4736c0b108e119ca53bdb062ed2a25b977c6d6
parent4559ce39515218336d303d08e98b6b270e30ae74 (diff)
downloadFreeBSD-src-667e68fd2fbe1cbd8c3b65520a0b298c3adfd3ea.zip
FreeBSD-src-667e68fd2fbe1cbd8c3b65520a0b298c3adfd3ea.tar.gz
Removed support for in-kernel signal code.
-rw-r--r--sys/sparc64/sparc64/machdep.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/sys/sparc64/sparc64/machdep.c b/sys/sparc64/sparc64/machdep.c
index 196f067..a535b54 100644
--- a/sys/sparc64/sparc64/machdep.c
+++ b/sys/sparc64/sparc64/machdep.c
@@ -370,6 +370,17 @@ sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code)
CTR4(KTR_SIG, "sendsig: td=%p (%s) catcher=%p sig=%d", td, p->p_comm,
catcher, sig);
+ /* Make sure we have a signal trampoline to return to. */
+ if (p->p_md.md_sigtramp == NULL) {
+ /*
+ * No signal tramoline... kill the process.
+ */
+ CTR0(KTR_SIG, "sendsig: no sigtramp");
+ PROC_LOCK(p);
+ sigexit(td, sig);
+ /* NOTREACHED */
+ }
+
/* Save user context. */
bzero(&sf, sizeof(sf));
sf.sf_uc.uc_sigmask = *mask;
@@ -435,10 +446,7 @@ sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code)
/* NOTREACHED */
}
- if (p->p_md.md_sigtramp != NULL)
- tf->tf_tpc = (u_long)p->p_md.md_sigtramp;
- else
- tf->tf_tpc = PS_STRINGS - *(p->p_sysent->sv_szsigcode);
+ tf->tf_tpc = (u_long)p->p_md.md_sigtramp;
tf->tf_tnpc = tf->tf_tpc + 4;
tf->tf_sp = (u_long)fp - SPOFF;
OpenPOWER on IntegriCloud