git: f7b04c53de46 - main - linux(4): Reduce diffs between linux_rt_sendsig() and sendsig()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 04 Jan 2022 14:39:36 UTC
The branch main has been updated by trasz:
URL: https://cgit.FreeBSD.org/src/commit/?id=f7b04c53de46b18785a153d9812e64ca1a9a8c8d
commit f7b04c53de46b18785a153d9812e64ca1a9a8c8d
Author: Edward Tomasz Napierala <trasz@FreeBSD.org>
AuthorDate: 2022-01-04 14:13:03 +0000
Commit: Edward Tomasz Napierala <trasz@FreeBSD.org>
CommitDate: 2022-01-04 14:39:19 +0000
linux(4): Reduce diffs between linux_rt_sendsig() and sendsig()
No functional changes (except for the uprintf).
Discussed With: kib
Sponsored By: EPSRC
---
sys/amd64/linux/linux_sysvec.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/sys/amd64/linux/linux_sysvec.c b/sys/amd64/linux/linux_sysvec.c
index 52757848cb98..cec765608f87 100644
--- a/sys/amd64/linux/linux_sysvec.c
+++ b/sys/amd64/linux/linux_sysvec.c
@@ -670,10 +670,10 @@ linux_rt_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
/* Allocate space for the signal handler context. */
if ((td->td_pflags & TDP_ALTSTACK) != 0 && !oonstack &&
SIGISMEMBER(psp->ps_sigonstack, sig)) {
- sp = (caddr_t)td->td_sigstk.ss_sp + td->td_sigstk.ss_size -
- sizeof(struct l_rt_sigframe);
+ sp = (caddr_t)td->td_sigstk.ss_sp + td->td_sigstk.ss_size;
} else
- sp = (caddr_t)regs->tf_rsp - sizeof(struct l_rt_sigframe) - 128;
+ sp = (caddr_t)regs->tf_rsp - 128;
+ sp -= sizeof(struct l_rt_sigframe);
/* Align to 16 bytes. */
sfp = (struct l_rt_sigframe *)((unsigned long)sp & ~0xFul);
@@ -695,6 +695,8 @@ linux_rt_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
/* Copy the sigframe out to the user's stack. */
if (copyout(&sf, sfp, sizeof(*sfp)) != 0) {
+ uprintf("pid %d comm %s has trashed its stack, killing\n",
+ p->p_pid, p->p_comm);
PROC_LOCK(p);
sigexit(td, SIGILL);
}