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__