From 61fccacd853fbdc872deab875012b67fd85240be Mon Sep 17 00:00:00 2001 From: patacongo Date: Sun, 26 Aug 2012 22:00:38 +0000 Subject: [PATCH] waitpid(): Move some logic inside of a critical section git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@5054 7fd9a85b-ad96-42d3-883c-3090e2eb8679 --- nuttx/ChangeLog | 2 ++ nuttx/sched/sched_waitpid.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog index 4135bd19ae..cb7f4079df 100644 --- a/nuttx/ChangeLog +++ b/nuttx/ChangeLog @@ -3183,3 +3183,5 @@ Fix some strange (and probably wrong) list handling when CONFIG_PRIORITY_INHERITANCE and CONFIG_SEM_PREALLOCHOLDERS are defined. This list handling was probably causing errors reported by Mike Smith + * sched/sched_waitpid.c: Fix a possible issue with logic logic that + should be brought into a critical section (suggested by Mike Smith) diff --git a/nuttx/sched/sched_waitpid.c b/nuttx/sched/sched_waitpid.c index e8e2f61a23..692ef64102 100644 --- a/nuttx/sched/sched_waitpid.c +++ b/nuttx/sched/sched_waitpid.c @@ -178,7 +178,7 @@ pid_t waitpid(pid_t pid, int *stat_loc, int options) { - _TCB *tcb = sched_gettcb(pid); + _TCB *tcb; bool mystat; int err; int ret; @@ -186,6 +186,7 @@ pid_t waitpid(pid_t pid, int *stat_loc, int options) /* Disable pre-emption so that nothing changes in the following tests */ sched_lock(); + tcb = sched_gettcb(pid); if (!tcb) { err = ECHILD;