summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-06-05 11:17:26 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-06-05 14:55:16 +0200
commitbe3c257286ad870d8d1a64941cde53fd2d33a633 (patch)
tree312cb41e5feac710b84fc11ae34614ab5198d6be
parentscore: Delete SMP_FATAL_SHUTDOWN_EARLY (diff)
downloadrtems-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.h5
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 );
}
}
}