From 625bd6aca47268bc21cfa38662ebc17413475e82 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 24 Jan 2017 15:04:11 +0100 Subject: [PATCH] rtems: Fix _Rate_monotonic_Release_postponed_job() Use proper locking in SMP configurations. Update #2795. --- cpukit/rtems/src/ratemonperiod.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cpukit/rtems/src/ratemonperiod.c b/cpukit/rtems/src/ratemonperiod.c index a4d224f0d9..d4746cbc6b 100644 --- a/cpukit/rtems/src/ratemonperiod.c +++ b/cpukit/rtems/src/ratemonperiod.c @@ -71,13 +71,10 @@ static void _Rate_monotonic_Release_postponed_job( ISR_lock_Context *lock_context ) { - /* This function only releases the postponed jobs. */ - Per_CPU_Control *cpu_self; + Per_CPU_Control *cpu_self; Thread_queue_Context queue_context; - cpu_self = _Thread_Dispatch_disable_critical( lock_context ); - _Rate_monotonic_Release( owner, lock_context ); - the_period->postponed_jobs -=1; + --the_period->postponed_jobs; _Scheduler_Release_job( owner, &the_period->Priority, @@ -85,6 +82,7 @@ static void _Rate_monotonic_Release_postponed_job( &queue_context ); + cpu_self = _Thread_Dispatch_disable_critical( lock_context ); _Rate_monotonic_Release( the_period, lock_context ); _Thread_Priority_update( &queue_context ); _Thread_Dispatch_enable( cpu_self );