mirror of
https://github.com/ARMmbed/mbedtls.git
synced 2025-05-23 23:21:23 +08:00
Make psa_purge_key thread safe
Relies on get_and_lock_X being thread safe. There are two mutex locks here, one in psa_get_and_lock... Linearization point is the final unlock (or first lock on failure). Signed-off-by: Ryan Everett <ryan.everett@arm.com>
This commit is contained in:
parent
f23336e040
commit
b0821959ae
@ -564,12 +564,22 @@ psa_status_t psa_purge_key(mbedtls_svc_key_id_t key)
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_THREADING_C)
|
||||||
|
PSA_THREADING_CHK_RET(mbedtls_mutex_lock(
|
||||||
|
&mbedtls_threading_key_slot_mutex));
|
||||||
|
#endif
|
||||||
if ((!PSA_KEY_LIFETIME_IS_VOLATILE(slot->attr.lifetime)) &&
|
if ((!PSA_KEY_LIFETIME_IS_VOLATILE(slot->attr.lifetime)) &&
|
||||||
(slot->registered_readers == 1)) {
|
(slot->registered_readers == 1)) {
|
||||||
return psa_wipe_key_slot(slot);
|
status = psa_wipe_key_slot(slot);
|
||||||
} else {
|
} else {
|
||||||
return psa_unregister_read(slot);
|
status = psa_unregister_read(slot);
|
||||||
}
|
}
|
||||||
|
#if defined(MBEDTLS_THREADING_C)
|
||||||
|
PSA_THREADING_CHK_RET(mbedtls_mutex_unlock(
|
||||||
|
&mbedtls_threading_key_slot_mutex));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mbedtls_psa_get_stats(mbedtls_psa_stats_t *stats)
|
void mbedtls_psa_get_stats(mbedtls_psa_stats_t *stats)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user