diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-06-05 11:17:26 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-06-05 14:55:16 +0200 |
commit | be3c257286ad870d8d1a64941cde53fd2d33a633 (patch) | |
tree | 312cb41e5feac710b84fc11ae34614ab5198d6be | |
parent | score: Delete SMP_FATAL_SHUTDOWN_EARLY (diff) | |
download | rtems-be3c257286ad870d8d1a64941cde53fd2d33a633.tar.bz2 |
score: Avoid NULL pointer access
Check that the executing thread is not NULL in _Scheduler_Tick(). It
may be NULL in case the processor has an optional scheduler assigned and
the system was not able to start the processor.
-rw-r--r-- | cpukit/score/include/rtems/score/schedulerimpl.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/cpukit/score/include/rtems/score/schedulerimpl.h b/cpukit/score/include/rtems/score/schedulerimpl.h index e469214fa7..f162ab3605 100644 --- a/cpukit/score/include/rtems/score/schedulerimpl.h +++ b/cpukit/score/include/rtems/score/schedulerimpl.h @@ -282,9 +282,10 @@ RTEMS_INLINE_ROUTINE void _Scheduler_Tick( void ) for ( cpu_index = 0 ; cpu_index < cpu_count ; ++cpu_index ) { const Per_CPU_Control *cpu = _Per_CPU_Get_by_index( cpu_index ); const Scheduler_Control *scheduler = _Scheduler_Get_by_CPU( cpu ); + Thread_Control *executing = cpu->executing; - if ( scheduler != NULL ) { - ( *scheduler->Operations.tick )( scheduler, cpu->executing ); + if ( scheduler != NULL && executing != NULL ) { + ( *scheduler->Operations.tick )( scheduler, executing ); } } } |