diff --git a/sched/signal/sig_dispatch.c b/sched/signal/sig_dispatch.c index 9b926667a6..ce2842d513 100644 --- a/sched/signal/sig_dispatch.c +++ b/sched/signal/sig_dispatch.c @@ -372,14 +372,9 @@ int nxsig_tcbdispatch(FAR struct tcb_s *stcb, siginfo_t *info) if (masked == 1) #endif { -#ifdef CONFIG_LIB_SYSCALL - /* If the thread is in syscall, schedule the sigaction here */ + /* Add signal to pending queue regardless. */ - if ((stcb->flags & TCB_FLAG_SYSCALL) != 0) - { - nxsig_add_pendingsignal(stcb, info); - } -#endif + nxsig_add_pendingsignal(stcb, info); /* Check if the task is waiting for this pending signal. If so, then * unblock it. This must be performed in a critical section because @@ -411,19 +406,9 @@ int nxsig_tcbdispatch(FAR struct tcb_s *stcb, siginfo_t *info) { up_switch_context(stcb, rtcb); } - - leave_critical_section(flags); } - /* Its not one we are waiting for... Add it to the list of pending - * signals. - */ - - else - { - leave_critical_section(flags); - nxsig_add_pendingsignal(stcb, info); - } + leave_critical_section(flags); } /************************* UNMASKED SIGNAL ACTIONS ************************/