Remove __sinit_locks / __sinit_recursive_mutex

Remove __sinit_lock_acquire() and __sinit_lock_release().  Replace these with
__sfp_lock_acquire() and __sfp_lock_release(), respectively.  This eliminates a
potential deadlock issue between __sinit() and __sfp().  Remove now unused
__sinit_recursive_mutex and __lock___sinit_recursive_mutex.
This commit is contained in:
Matt Joyce 2022-04-08 11:24:38 +02:00 committed by Sebastian Huber
parent e5e36867f8
commit d83aa402b7
3 changed files with 3 additions and 22 deletions

View File

@ -2,8 +2,6 @@
FUNCTION
<<__retarget_lock_init>>, <<__retarget_lock_init_recursive>>, <<__retarget_lock_close>>, <<__retarget_lock_close_recursive>>, <<__retarget_lock_acquire>>, <<__retarget_lock_acquire_recursive>>, <<__retarget_lock_try_acquire>>, <<__retarget_lock_try_acquire_recursive>>, <<__retarget_lock_release>>, <<__retarget_lock_release_recursive>>---locking routines
INDEX
__lock___sinit_recursive_mutex
INDEX
__lock___sfp_recursive_mutex
INDEX
@ -44,7 +42,6 @@ INDEX
SYNOPSIS
#include <lock.h>
struct __lock __lock___sinit_recursive_mutex;
struct __lock __lock___sfp_recursive_mutex;
struct __lock __lock___atexit_recursive_mutex;
struct __lock __lock___at_quick_exit_mutex;
@ -92,7 +89,6 @@ struct __lock {
char unused;
};
struct __lock __lock___sinit_recursive_mutex;
struct __lock __lock___sfp_recursive_mutex;
struct __lock __lock___atexit_recursive_mutex;
struct __lock __lock___at_quick_exit_mutex;

View File

@ -235,11 +235,11 @@ cleanup_stdio (struct _reent *ptr)
void
__sinit (struct _reent *s)
{
__sinit_lock_acquire ();
__sfp_lock_acquire ();
if (s->__cleanup)
{
__sinit_lock_release ();
__sfp_lock_release ();
return;
}
@ -268,13 +268,12 @@ __sinit (struct _reent *s)
stderr_init (s->_stderr);
#endif /* _REENT_GLOBAL_STDIO_STREAMS */
__sinit_lock_release ();
__sfp_lock_release ();
}
#ifndef __SINGLE_THREAD__
__LOCK_INIT_RECURSIVE(static, __sfp_recursive_mutex);
__LOCK_INIT_RECURSIVE(static, __sinit_recursive_mutex);
void
__sfp_lock_acquire (void)
@ -288,18 +287,6 @@ __sfp_lock_release (void)
__lock_release_recursive (__sfp_recursive_mutex);
}
void
__sinit_lock_acquire (void)
{
__lock_acquire_recursive (__sinit_recursive_mutex);
}
void
__sinit_lock_release (void)
{
__lock_release_recursive (__sinit_recursive_mutex);
}
/* Walkable file locking routine. */
static int
__fp_lock (struct _reent * ptr __unused, FILE * fp)

View File

@ -287,8 +287,6 @@ char *_llicvt (char *, long long, char);
#else
void __sfp_lock_acquire (void);
void __sfp_lock_release (void);
void __sinit_lock_acquire (void);
void __sinit_lock_release (void);
#endif
/* Types used in positional argument support in vfprinf/vfwprintf.