summaryrefslogtreecommitdiffstats
path: root/crypto/lhash/lhash_lcl.h
diff options
context:
space:
mode:
authorPauli <paul.dale@oracle.com>2017-09-28 10:09:18 +1000
committerPauli <paul.dale@oracle.com>2017-10-09 07:50:18 +1000
commit2e8b5d75afaff7c9b75917b750f997dc82336fac (patch)
treef30b5432cf98015569f3e284993b81c5d72ef976 /crypto/lhash/lhash_lcl.h
parent24b0be11b061f36d30ccccdf9d34edf270be4c2f (diff)
Document that lhash isn't thread safe under any circumstances and
indicate the level of locking required for various operations. Remove the lock and atomics from the lhash code. These we're not complete or adequate. Refer to #4418 and #4427 for details. Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Ben Kaduk <kaduk@mit.edu> Reviewed-by: Andy Polyakov <appro@openssl.org> (Merged from https://github.com/openssl/openssl/pull/4429)
Diffstat (limited to 'crypto/lhash/lhash_lcl.h')
-rw-r--r--crypto/lhash/lhash_lcl.h19
1 files changed, 6 insertions, 13 deletions
diff --git a/crypto/lhash/lhash_lcl.h b/crypto/lhash/lhash_lcl.h
index 64d3134fc1..78691eb622 100644
--- a/crypto/lhash/lhash_lcl.h
+++ b/crypto/lhash/lhash_lcl.h
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -18,13 +18,6 @@ struct lhash_st {
OPENSSL_LH_NODE **b;
OPENSSL_LH_COMPFUNC comp;
OPENSSL_LH_HASHFUNC hash;
- /*
- * some stats are updated on lookup, which callers aren't expecting to have
- * to take an exclusive lock around. This lock protects them on platforms
- * without atomics, and their types are int rather than unsigned long below
- * so they can be adjusted with CRYPTO_atomic_add.
- */
- CRYPTO_RWLOCK *retrieve_stats_lock;
unsigned int num_nodes;
unsigned int num_alloc_nodes;
unsigned int p;
@@ -36,14 +29,14 @@ struct lhash_st {
unsigned long num_expand_reallocs;
unsigned long num_contracts;
unsigned long num_contract_reallocs;
- int num_hash_calls;
- int num_comp_calls;
+ unsigned long num_hash_calls;
+ unsigned long num_comp_calls;
unsigned long num_insert;
unsigned long num_replace;
unsigned long num_delete;
unsigned long num_no_delete;
- int num_retrieve;
- int num_retrieve_miss;
- int num_hash_comps;
+ unsigned long num_retrieve;
+ unsigned long num_retrieve_miss;
+ unsigned long num_hash_comps;
int error;
};