git: 2f4cbf459d4a - main - libsys auxv.c: add fences needed to ensure that flag works
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 21 Feb 2024 14:19:01 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=2f4cbf459d4af41977be30eab2f6f7d7e9f9b5b5
commit 2f4cbf459d4af41977be30eab2f6f7d7e9f9b5b5
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2024-02-21 14:12:12 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2024-02-21 14:18:10 +0000
libsys auxv.c: add fences needed to ensure that flag works
Noted by: jrtc27
Sponsored by: The FreeBSD Foundation
---
lib/libsys/auxv.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/lib/libsys/auxv.c b/lib/libsys/auxv.c
index 88f49ef53be1..1a4fd352950e 100644
--- a/lib/libsys/auxv.c
+++ b/lib/libsys/auxv.c
@@ -36,6 +36,7 @@
#include <sys/auxv.h>
#include "un-namespace.h"
#include "libc_private.h"
+#include <machine/atomic.h>
extern int _DYNAMIC;
#pragma weak _DYNAMIC
@@ -66,7 +67,7 @@ __init_elf_aux_vector(void)
}
#endif
-static bool aux_once = false;
+static int aux_once;
static int pagesize, osreldate, canary_len, ncpus, pagesizes_len, bsdflags;
static int hwcap_present, hwcap2_present;
static char *canary, *pagesizes, *execpath;
@@ -92,7 +93,7 @@ init_aux(void)
{
Elf_Auxinfo *aux;
- if (aux_once)
+ if (atomic_load_acq_int(&aux_once))
return;
for (aux = __elf_aux_vector; aux->a_type != AT_NULL; aux++) {
switch (aux->a_type) {
@@ -179,7 +180,7 @@ init_aux(void)
_init_aux_powerpc_fixup();
#endif
- aux_once = true;
+ atomic_store_rel_int(&aux_once, 1);
}
#ifdef __powerpc__