From fea848bbbc8b63204677765cdcf8f5957e0ccf86 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 17 Feb 2021 08:05:37 +0100 Subject: score: Change thread action locking Require that the corresponding lock is acquired before the action handler returns. This helps to avoid recursion in the signal processing. Update #4244. --- cpukit/rtems/src/signalcatch.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'cpukit/rtems') diff --git a/cpukit/rtems/src/signalcatch.c b/cpukit/rtems/src/signalcatch.c index c59e132ad3..2fd7c13374 100644 --- a/cpukit/rtems/src/signalcatch.c +++ b/cpukit/rtems/src/signalcatch.c @@ -51,12 +51,12 @@ void _Signal_Action_handler( asr = &api->Signal; signal_set = _ASR_Get_posted_signals( asr ); - _Thread_State_release( executing, lock_context ); - if ( signal_set == 0 ) { return; } + _Thread_State_release( executing, lock_context ); + asr->nest_level += 1; rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); @@ -64,6 +64,8 @@ void _Signal_Action_handler( asr->nest_level -= 1; rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode ); + + _Thread_State_acquire( executing, lock_context ); } rtems_status_code rtems_signal_catch( -- cgit v1.2.3