Fix context locking
authorMatt Caswell <matt@openssl.org>
Wed, 14 Aug 2019 13:43:11 +0000 (14:43 +0100)
committerMatt Caswell <matt@openssl.org>
Thu, 29 Aug 2019 09:50:47 +0000 (10:50 +0100)
commit770de3462c0d655a6543a6c1a2c0bda7b57178f9
tree66f93185250a9ed98c5e98356ebfc9bbf882385f
parentc92d0c5c6550346cffb942000e99aa88452bde6d
Fix context locking

Some parts of OPENSSL_CTX intialisation can get quite complex (e.g. RAND).
This can lead to complex interactions where different parts of the library
try to initialise while other parts are still initialising. This can lead
to deadlocks because both parts want to obtain the init lock.

We separate out the init lock so that it is only used to manage the
dynamic list of indexes. Each part of the library gets its own
initialisation lock.

Fixes #9454

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9590)
crypto/context.c