Don't take a write lock when freeing an EVP_PKEY
authorMatt Caswell <matt@openssl.org>
Wed, 10 May 2023 15:27:03 +0000 (16:27 +0100)
committerTomas Mraz <tomas@openssl.org>
Mon, 29 May 2023 14:08:34 +0000 (16:08 +0200)
commit36424806d699233b9a90a3a97fff3011828e2548
tree72ee30300c18d7fddde134a2792acad601c91124
parent95a8aa6dc0e283b1560dd3258d2e9115c02659b1
Don't take a write lock when freeing an EVP_PKEY

When freeing the last reference to an EVP_PKEY there is no point in
taking the lock for the key. It is the last reference and is being freed
so must only be being used by a single thread.

This should not have been the source of any contention so its unclear to
what extent this will improve performance. But we should not be locking
when we don't need to.

Partially fixes #20286

Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20932)
crypto/evp/keymgmt_lib.c
crypto/evp/p_lib.c
doc/internal/man3/evp_keymgmt_util_export_to_provider.pod
include/crypto/evp.h