diff --git a/arch/x86/kernel/syscall.c b/arch/x86/kernel/syscall.c index 029626ae..dea1ca0f 100644 --- a/arch/x86/kernel/syscall.c +++ b/arch/x86/kernel/syscall.c @@ -591,7 +591,8 @@ do_signal(unsigned long rc, void *regs0, struct thread *thread, struct sig_pendi regs->gpr.rip = (unsigned long)k->sa.sa_handler; regs->gpr.rsp = (unsigned long)usp; - thread->sigmask.__val[0] |= pending->sigmask.__val[0]; + if(!(k->sa.sa_flags & SA_NODEFER)) + thread->sigmask.__val[0] |= pending->sigmask.__val[0]; kfree(pending); ihk_mc_spinlock_unlock(&thread->sigcommon->lock, irqstate); }