From 5941c7f45db13c86fe34577d9cbbe6fb99542680 Mon Sep 17 00:00:00 2001 From: gallatin Date: Thu, 16 Nov 2000 02:07:05 +0000 Subject: fix glaring bugs in rt signals -- copyout the right signal mask in linux_rt_sendsig() and restore the same signal mask linux does in rt_sigreturn(). This gets us saving/restoring all 64-bits of the linux sigset_t in rt signals. Reviewed by: marcel --- sys/i386/linux/linux_sysvec.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'sys/i386/linux/linux_sysvec.c') diff --git a/sys/i386/linux/linux_sysvec.c b/sys/i386/linux/linux_sysvec.c index 895a48c..d86db5b 100644 --- a/sys/i386/linux/linux_sysvec.c +++ b/sys/i386/linux/linux_sysvec.c @@ -56,6 +56,7 @@ #include #include +#include #include MODULE_VERSION(linux, 1); @@ -300,7 +301,7 @@ linux_rt_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) (long)p->p_pid, frame.sf_sc.uc_stack.ss_flags, p->p_sigstk.ss_sp, p->p_sigstk.ss_size, frame.sf_sc.uc_mcontext.sc_mask); #endif - bsd_to_linux_sigset(&p->p_sigmask, &frame.sf_sc.uc_sigmask); + bsd_to_linux_sigset(mask, &frame.sf_sc.uc_sigmask); if (copyout(&frame, fp, sizeof(frame)) != 0) { /* @@ -621,7 +622,7 @@ linux_rt_sigreturn(p, args) } p->p_sigstk.ss_flags &= ~SS_ONSTACK; - SIGSETOLD(p->p_sigmask, context->sc_mask); + linux_to_bsd_sigset(&uc.uc_sigmask, &p->p_sigmask); SIG_CANTMASK(p->p_sigmask); /* -- cgit v1.1