linux(4): Avoid direct manipulation of td_sigmask

Use kern_sigprocmask() instead of direct manipulation of td_sigmask
to reschedule newly blocked signals.

MFC after:		2 weeks
This commit is contained in:
Dmitry Chagin 2022-05-30 19:48:20 +03:00
parent 2ca34847e7
commit 2ab9b59faa

View file

@ -466,6 +466,7 @@ linux_rt_sigreturn(struct thread *td, struct linux_rt_sigreturn_args *args)
struct l_sigcontext *context;
struct trapframe *regs;
unsigned long rflags;
sigset_t bmask;
int error;
ksiginfo_t ksi;
@ -514,11 +515,8 @@ linux_rt_sigreturn(struct thread *td, struct linux_rt_sigreturn_args *args)
return (EINVAL);
}
PROC_LOCK(p);
linux_to_bsd_sigset(&uc.uc_sigmask, &td->td_sigmask);
SIG_CANTMASK(td->td_sigmask);
signotify(td);
PROC_UNLOCK(p);
linux_to_bsd_sigset(&uc.uc_sigmask, &bmask);
kern_sigprocmask(td, SIG_SETMASK, &bmask, NULL, 0);
regs->tf_rdi = context->sc_rdi;
regs->tf_rsi = context->sc_rsi;