X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/0a7de7458d150b5d4dffc935ba399be265ef0a1a..c6bf4f310a33a9262d455ea4d3f0630b1255e3fe:/bsd/dev/i386/unix_signal.c?ds=sidebyside diff --git a/bsd/dev/i386/unix_signal.c b/bsd/dev/i386/unix_signal.c index 603b21614..724a1d210 100644 --- a/bsd/dev/i386/unix_signal.c +++ b/bsd/dev/i386/unix_signal.c @@ -37,6 +37,7 @@ #include #include +#include #include #include @@ -160,7 +161,7 @@ siginfo_user_to_user64_x86(user_siginfo_t *in, user64_siginfo_t *out) } void -sendsig(struct proc *p, user_addr_t ua_catcher, int sig, int mask, __unused uint32_t code) +sendsig(struct proc *p, user_addr_t ua_catcher, int sig, int mask, __unused uint32_t code, sigset_t siginfo) { union { struct mcontext_avx32 mctx_avx32; @@ -198,7 +199,7 @@ sendsig(struct proc *p, user_addr_t ua_catcher, int sig, int mask, __unused uint thread = current_thread(); ut = get_bsdthread_info(thread); - if (p->p_sigacts->ps_siginfo & sigmask(sig)) { + if (siginfo & sigmask(sig)) { infostyle = UC_FLAVOR; } @@ -802,6 +803,9 @@ sigreturn(struct proc *p, struct sigreturn_args *uap, __unused int *retval) return 0; } + /* see osfmk/kern/restartable.c */ + act_set_ast_reset_pcs(thread); + bzero(mctxp, sizeof(*mctxp)); sig_xstate = current_xstate();