From c0053cc4999a8265736ad5df24afd03ac13f042c Mon Sep 17 00:00:00 2001 From: Ryan Everett Date: Wed, 14 Feb 2024 16:27:13 +0000 Subject: [PATCH] Make multi-part cipher operations thread-safe Within setup we create a copy of the key and put it in the operation field. After setup, we only ever use the new copy, and do not interact with any key slots. Therefore we need only register as a reader of the key during setup, then unregister after we stop accessing the key. Simultaneous API calls on the same operation object are not thread-safe. Signed-off-by: Ryan Everett --- library/psa_crypto.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/psa_crypto.c b/library/psa_crypto.c index 66af7cf72..c51bb8dad 100644 --- a/library/psa_crypto.c +++ b/library/psa_crypto.c @@ -4088,7 +4088,7 @@ exit: psa_cipher_abort(operation); } - unlock_status = psa_unregister_read(slot); + unlock_status = psa_unregister_read_under_mutex(slot); return (status == PSA_SUCCESS) ? unlock_status : status; }