Skip to content

Commit

Permalink
core namemap: use updated tsan lock detection capabilities
Browse files Browse the repository at this point in the history
Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
(Merged from #17479)
  • Loading branch information
paulidale committed Jan 13, 2022
1 parent d1ec059 commit cc05c3e
Showing 1 changed file with 6 additions and 9 deletions.
15 changes: 6 additions & 9 deletions crypto/core_namemap.c
Expand Up @@ -37,11 +37,7 @@ struct ossl_namemap_st {
CRYPTO_RWLOCK *lock;
LHASH_OF(NAMENUM_ENTRY) *namenum; /* Name->number mapping */

#ifdef tsan_ld_acq
TSAN_QUALIFIER int max_number; /* Current max number TSAN version */
#else
int max_number; /* Current max number plain version */
#endif
TSAN_QUALIFIER int max_number; /* Current max number */
};

/* LHASH callbacks */
Expand Down Expand Up @@ -99,10 +95,7 @@ static const OSSL_LIB_CTX_METHOD stored_namemap_method = {

int ossl_namemap_empty(OSSL_NAMEMAP *namemap)
{
#ifdef tsan_ld_acq
/* Have TSAN support */
return namemap == NULL || tsan_load(&namemap->max_number) == 0;
#else
#ifdef TSAN_REQUIRES_LOCKING
/* No TSAN support */
int rv;

Expand All @@ -114,6 +107,9 @@ int ossl_namemap_empty(OSSL_NAMEMAP *namemap)
rv = namemap->max_number == 0;
CRYPTO_THREAD_unlock(namemap->lock);
return rv;
#else
/* Have TSAN support */
return namemap == NULL || tsan_load(&namemap->max_number) == 0;
#endif
}

Expand Down Expand Up @@ -260,6 +256,7 @@ static int namemap_add_name_n(OSSL_NAMEMAP *namemap, int number,
|| (namenum->name = OPENSSL_strndup(name, name_len)) == NULL)
goto err;

/* The tsan_counter use here is safe since we're under lock */
namenum->number =
number != 0 ? number : 1 + tsan_counter(&namemap->max_number);
(void)lh_NAMENUM_ENTRY_insert(namemap->namenum, namenum);
Expand Down

0 comments on commit cc05c3e

Please sign in to comment.