You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by je...@apache.org on 2023/03/08 09:13:34 UTC
[nuttx] 01/02: Revert "signal/sig_dispatch: Fix case where signal action is sent twice"
This is an automated email from the ASF dual-hosted git repository.
jerpelea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 3f529b48827dc81f832d19ed6a430e467f7d7f7e
Author: Ville Juven <vi...@unikie.com>
AuthorDate: Wed Mar 8 09:04:33 2023 +0200
Revert "signal/sig_dispatch: Fix case where signal action is sent twice"
This reverts commit be0cb4cbe3d50ea8d575766876a5f4194f1da5fe.
---
sched/signal/sig_dispatch.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/sched/signal/sig_dispatch.c b/sched/signal/sig_dispatch.c
index ce2842d513..9b926667a6 100644
--- a/sched/signal/sig_dispatch.c
+++ b/sched/signal/sig_dispatch.c
@@ -372,9 +372,14 @@ int nxsig_tcbdispatch(FAR struct tcb_s *stcb, siginfo_t *info)
if (masked == 1)
#endif
{
- /* Add signal to pending queue regardless. */
+#ifdef CONFIG_LIB_SYSCALL
+ /* If the thread is in syscall, schedule the sigaction here */
- nxsig_add_pendingsignal(stcb, info);
+ if ((stcb->flags & TCB_FLAG_SYSCALL) != 0)
+ {
+ nxsig_add_pendingsignal(stcb, info);
+ }
+#endif
/* Check if the task is waiting for this pending signal. If so, then
* unblock it. This must be performed in a critical section because
@@ -406,9 +411,19 @@ int nxsig_tcbdispatch(FAR struct tcb_s *stcb, siginfo_t *info)
{
up_switch_context(stcb, rtcb);
}
+
+ leave_critical_section(flags);
}
- 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);
+ }
}
/************************* UNMASKED SIGNAL ACTIONS ************************/