From a69b93afd26d8da664e19847432cebe3c7d3fbb3 Mon Sep 17 00:00:00 2001 From: Pauli Date: Wed, 12 Jan 2022 14:25:46 +1100 Subject: mem: do not produce usage counts when tsan is unavailable. Doing the tsan operations under lock would be difficult to arrange here (locks require memory allocation). Reviewed-by: Bernd Edlinger (Merged from https://github.com/openssl/openssl/pull/17479) --- crypto/mem.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'crypto') diff --git a/crypto/mem.c b/crypto/mem.c index d682a3686f..242d88470a 100644 --- a/crypto/mem.c +++ b/crypto/mem.c @@ -26,11 +26,17 @@ static CRYPTO_free_fn free_impl = CRYPTO_free; #if !defined(OPENSSL_NO_CRYPTO_MDEBUG) && !defined(FIPS_MODULE) # include "internal/tsan_assist.h" +# ifdef TSAN_REQUIRES_LOCKING +# define INCREMENT(x) /* empty */ +# define LOAD(x) 0 +# else /* TSAN_REQUIRES_LOCKING */ static TSAN_QUALIFIER int malloc_count; static TSAN_QUALIFIER int realloc_count; static TSAN_QUALIFIER int free_count; -# define INCREMENT(x) tsan_counter(&(x)) +# define INCREMENT(x) tsan_counter(&(x)) +# define LOAD(x) tsan_load(&x) +# endif /* TSAN_REQUIRES_LOCKING */ static char *md_failstring; static long md_count; @@ -79,11 +85,11 @@ void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount) { if (mcount != NULL) - *mcount = tsan_load(&malloc_count); + *mcount = LOAD(malloc_count); if (rcount != NULL) - *rcount = tsan_load(&realloc_count); + *rcount = LOAD(realloc_count); if (fcount != NULL) - *fcount = tsan_load(&free_count); + *fcount = LOAD(free_count); } /* -- cgit v1.2.3