summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-10-27 17:22:28 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-10-27 17:22:28 -0600
commitbaf7d677fec77c265d82f36bfe8da5de4fe04ce8 (patch)
treea435e58046bb5550afc836fa3dfdb82596e59d07
parent49ac6884942726eb23daff0648a4f1c9d4df59e5 (diff)
downloadpx4-nuttx-baf7d677fec77c265d82f36bfe8da5de4fe04ce8.tar.gz
px4-nuttx-baf7d677fec77c265d82f36bfe8da5de4fe04ce8.tar.bz2
px4-nuttx-baf7d677fec77c265d82f36bfe8da5de4fe04ce8.zip
sched/sched_releasetcb.c: Fix an error handling case where a pthread start-up fails early, before the task type has been saved in the TCB. It is safer to use the sched_releasetcb() task type argument instead of relying on the task type in the TCB to be valid. Reported by David Sidrane
-rw-r--r--nuttx/ChangeLog4
-rw-r--r--nuttx/sched/sched_releasetcb.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index 74df4b44e..614b9b89f 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -5896,4 +5896,8 @@
Mikrow STM32F4 board from Ken Pettit (2013-10-27).
* arch/arm/src/stm32/stm32_spi.c: DMA-related fixe from Ken
Pettit (2013-10-27).
+ * sched/sched_releasetcb.c: Fix a cornercase: If sched_releasetcb()
+ is called as part of a failed pthread startup before the flags
+ field in the TCB has been initialized, then a crash occurs.
+ Pointed out by David Sidrane (2013-10-27)
diff --git a/nuttx/sched/sched_releasetcb.c b/nuttx/sched/sched_releasetcb.c
index aefc5264d..b0605ef3b 100644
--- a/nuttx/sched/sched_releasetcb.c
+++ b/nuttx/sched/sched_releasetcb.c
@@ -168,7 +168,7 @@ int sched_releasetcb(FAR struct tcb_s *tcb, uint8_t ttype)
*/
#ifndef CONFIG_DISABLE_PTHREAD
- if ((tcb->flags & TCB_FLAG_TTYPE_MASK) != TCB_FLAG_TTYPE_PTHREAD)
+ if (ttype != TCB_FLAG_TTYPE_PTHREAD)
#endif
{
FAR struct task_tcb_s *ttcb = (FAR struct task_tcb_s *)tcb;