From 7d217001ab977a343d26a9be8859924c99347652 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 4 Apr 2016 06:47:41 +0200 Subject: posix: Use proper lock for signals --- cpukit/posix/src/killinfo.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'cpukit/posix') diff --git a/cpukit/posix/src/killinfo.c b/cpukit/posix/src/killinfo.c index a29a8e6464..7a70539599 100644 --- a/cpukit/posix/src/killinfo.c +++ b/cpukit/posix/src/killinfo.c @@ -75,6 +75,7 @@ int killinfo( siginfo_t *siginfo; POSIX_signals_Siginfo_node *psiginfo; Thread_queue_Heads *heads; + ISR_lock_Context lock_context; /* * Only supported for the "calling process" (i.e. this node). @@ -331,20 +332,27 @@ post_process_signal: */ _POSIX_signals_Set_process_signals( mask ); + _POSIX_signals_Acquire( &lock_context ); + if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) { psiginfo = (POSIX_signals_Siginfo_node *) - _Chain_Get( &_POSIX_signals_Inactive_siginfo ); + _Chain_Get_unprotected( &_POSIX_signals_Inactive_siginfo ); if ( !psiginfo ) { + _POSIX_signals_Release( &lock_context ); _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EAGAIN ); } psiginfo->Info = *siginfo; - _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); + _Chain_Append_unprotected( + &_POSIX_signals_Siginfo[ sig ], + &psiginfo->Node + ); } + _POSIX_signals_Release( &lock_context ); DEBUG_STEP("\n"); _Thread_Enable_dispatch(); return 0; -- cgit v1.2.3