[rtems commit] score: Assert scheduler index validity

Sebastian Huber sebh at rtems.org
Fri Jul 28 14:50:32 UTC 2023


Module:    rtems
Branch:    master
Commit:    6293fc4fd52553bfccf91c64583ee811170187f7
Changeset: http://git.rtems.org/rtems/commit/?id=6293fc4fd52553bfccf91c64583ee811170187f7

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Jul 28 17:08:55 2023 +0200

score: Assert scheduler index validity

Update #4844.

---

 cpukit/include/rtems/score/mrspimpl.h   | 2 ++
 cpukit/include/rtems/score/threadimpl.h | 2 +-
 cpukit/score/src/threadqops.c           | 1 +
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/cpukit/include/rtems/score/mrspimpl.h b/cpukit/include/rtems/score/mrspimpl.h
index 7a6c86d57c..fd783bf2a0 100644
--- a/cpukit/include/rtems/score/mrspimpl.h
+++ b/cpukit/include/rtems/score/mrspimpl.h
@@ -130,6 +130,7 @@ static inline Priority_Control _MRSP_Get_priority(
   uint32_t scheduler_index;
 
   scheduler_index = _Scheduler_Get_index( scheduler );
+  _Assert( scheduler_index < _Scheduler_Count );
   return mrsp->ceiling_priorities[ scheduler_index ];
 }
 
@@ -149,6 +150,7 @@ static inline void _MRSP_Set_priority(
   uint32_t scheduler_index;
 
   scheduler_index = _Scheduler_Get_index( scheduler );
+  _Assert( scheduler_index < _Scheduler_Count );
   mrsp->ceiling_priorities[ scheduler_index ] = new_priority;
 }
 
diff --git a/cpukit/include/rtems/score/threadimpl.h b/cpukit/include/rtems/score/threadimpl.h
index a82f412887..36ddb785e9 100644
--- a/cpukit/include/rtems/score/threadimpl.h
+++ b/cpukit/include/rtems/score/threadimpl.h
@@ -1598,12 +1598,12 @@ static inline Scheduler_Node *_Thread_Scheduler_get_node_by_index(
   size_t                scheduler_index
 )
 {
+  _Assert( scheduler_index < _Scheduler_Count );
 #if defined(RTEMS_SMP)
   return (Scheduler_Node *)
     ( (uintptr_t) the_thread->Scheduler.nodes
       + scheduler_index * _Scheduler_Node_size );
 #else
-  _Assert( scheduler_index == 0 );
   (void) scheduler_index;
   return the_thread->Scheduler.nodes;
 #endif
diff --git a/cpukit/score/src/threadqops.c b/cpukit/score/src/threadqops.c
index 83e00ca3ae..511d1e4d00 100644
--- a/cpukit/score/src/threadqops.c
+++ b/cpukit/score/src/threadqops.c
@@ -291,6 +291,7 @@ static Thread_queue_Priority_queue *_Thread_queue_Priority_queue_by_index(
 )
 {
 #if defined(RTEMS_SMP)
+  _Assert( scheduler_index < _Scheduler_Count );
   return &heads->Priority[ scheduler_index ];
 #else
   (void) scheduler_index;



More information about the vc mailing list