diff --git a/sched/semaphore/sem_post.c b/sched/semaphore/sem_post.c index 6f191ed5a08..bb054d8341d 100644 --- a/sched/semaphore/sem_post.c +++ b/sched/semaphore/sem_post.c @@ -209,6 +209,7 @@ int nxsem_post_slow(FAR sem_t *sem) { uint32_t blocking_bit = dq_empty(SEM_WAITLIST(sem)) ? 0 : NXSEM_MBLOCKING_BIT; + atomic_set(NXSEM_MHOLDER(sem), ((uint32_t)stcb->pid) | blocking_bit); } diff --git a/sched/signal/sig_dispatch.c b/sched/signal/sig_dispatch.c index 79dc91a1da6..174602477f8 100644 --- a/sched/signal/sig_dispatch.c +++ b/sched/signal/sig_dispatch.c @@ -788,6 +788,7 @@ int nxsig_dispatch(pid_t pid, FAR siginfo_t *info, bool thread) */ FAR struct task_group_s *group = task_getgroup(pid); + if (group != NULL) { return group_signal(group, info); @@ -799,6 +800,7 @@ int nxsig_dispatch(pid_t pid, FAR siginfo_t *info, bool thread) /* Get the TCB associated with the thread TID */ FAR struct tcb_s *stcb = nxsched_get_tcb(pid); + if (stcb != NULL) { return nxsig_tcbdispatch(stcb, info, false);