diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-06-23 11:49:22 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-06-24 10:28:02 +0200 |
commit | 51e008dda169dcfed0cfb2d64328811107974845 (patch) | |
tree | fa60f514ffe3a8a7c104d2a904a15ea07cc03430 | |
parent | sptests/spintrcritical23: Explicity set scheduler (diff) | |
download | rtems-51e008dda169dcfed0cfb2d64328811107974845.tar.bz2 |
posix: Fix pthread_create()
Do not access data of the executing thread without proper locks.
-rw-r--r-- | cpukit/posix/src/pthreadcreate.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/cpukit/posix/src/pthreadcreate.c b/cpukit/posix/src/pthreadcreate.c index 54b6a71040..411882d532 100644 --- a/cpukit/posix/src/pthreadcreate.c +++ b/cpukit/posix/src/pthreadcreate.c @@ -27,6 +27,7 @@ #include <rtems/posix/priorityimpl.h> #include <rtems/posix/pthreadimpl.h> +#include <rtems/score/assert.h> #include <rtems/score/cpusetimpl.h> #include <rtems/score/threadimpl.h> #include <rtems/score/apimutex.h> @@ -103,7 +104,6 @@ int pthread_create( #endif executing = _Thread_Get_executing(); - scheduler = _Scheduler_Get_own( executing ); /* * P1003.1c/Draft 10, p. 121. @@ -115,9 +115,12 @@ int pthread_create( */ switch ( the_attr->inheritsched ) { case PTHREAD_INHERIT_SCHED: - api = executing->API_Extensions[ THREAD_API_POSIX ]; - schedpolicy = api->Attributes.schedpolicy; - schedparam = api->Attributes.schedparam; + error = pthread_getschedparam( + pthread_self(), + &schedpolicy, + &schedparam + ); + _Assert( error == 0 ); break; case PTHREAD_EXPLICIT_SCHED: |