ok. also good if you want to open a ticket and backport to 5.
On Fri, Apr 16, 2021 at 1:30 AM Sebastian Huber <sebastian.hu...@embedded-brains.de> wrote: > > Priority ceiling semaphores (in contrast to MrsP semaphores) have only > one priority ceiling which is defined for the home scheduler of the task > which created the semaphore. Always check during a semaphore seize that > the home scheduler of the calling task is equal to this scheduler. > > This avoids a scheduler mismatch if the semphore is acquired after the > calling thread blocked on the semaphore. > --- > cpukit/include/rtems/score/coremuteximpl.h | 20 ++++++++++---------- > 1 file changed, 10 insertions(+), 10 deletions(-) > > diff --git a/cpukit/include/rtems/score/coremuteximpl.h > b/cpukit/include/rtems/score/coremuteximpl.h > index cbc1e720fb..6b5c240105 100644 > --- a/cpukit/include/rtems/score/coremuteximpl.h > +++ b/cpukit/include/rtems/score/coremuteximpl.h > @@ -475,19 +475,19 @@ RTEMS_INLINE_ROUTINE Status_Control > _CORE_ceiling_mutex_Seize( > > _CORE_mutex_Acquire_critical( &the_mutex->Recursive.Mutex, queue_context ); > > - owner = _CORE_mutex_Get_owner( &the_mutex->Recursive.Mutex ); > - > - if ( owner == NULL ) { > #if defined(RTEMS_SMP) > - if ( > - _Thread_Scheduler_get_home( executing ) > - != _CORE_ceiling_mutex_Get_scheduler( the_mutex ) > - ) { > - _CORE_mutex_Release( &the_mutex->Recursive.Mutex, queue_context ); > - return STATUS_NOT_DEFINED; > - } > + if ( > + _Thread_Scheduler_get_home( executing ) > + != _CORE_ceiling_mutex_Get_scheduler( the_mutex ) > + ) { > + _CORE_mutex_Release( &the_mutex->Recursive.Mutex, queue_context ); > + return STATUS_NOT_DEFINED; > + } > #endif > > + owner = _CORE_mutex_Get_owner( &the_mutex->Recursive.Mutex ); > + > + if ( owner == NULL ) { > _Thread_queue_Context_clear_priority_updates( queue_context ); > return _CORE_ceiling_mutex_Set_owner( > the_mutex, > -- > 2.26.2 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel