Fix RCU TODOs

- Update allocate_new_qp_group to take unsigned int
- Move id_ctr in rcu_lock_st for better stack alignment

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26972)
This commit is contained in:
Andrew Dinh 2025-03-04 22:32:56 +07:00 committed by Neil Horman
parent 2fb4cfe143
commit 7097d2e00e
2 changed files with 8 additions and 14 deletions

View file

@ -217,13 +217,12 @@ struct rcu_lock_st {
/* The context we are being created against */
OSSL_LIB_CTX *ctx;
/* rcu generation counter for in-order retirement */
uint32_t id_ctr;
/* TODO: can be moved before id_ctr for better alignment */
/* Array of quiescent points for synchronization */
struct rcu_qp *qp_group;
/* rcu generation counter for in-order retirement */
uint32_t id_ctr;
/* Number of elements in qp_group array */
uint32_t group_count;
@ -422,10 +421,8 @@ static void retire_qp(CRYPTO_RCU_LOCK *lock, struct rcu_qp *qp)
pthread_mutex_unlock(&lock->alloc_lock);
}
/* TODO: count should be unsigned, e.g uint32_t */
/* a negative value could result in unexpected behaviour */
static struct rcu_qp *allocate_new_qp_group(CRYPTO_RCU_LOCK *lock,
int count)
uint32_t count)
{
struct rcu_qp *new =
OPENSSL_zalloc(sizeof(*new) * count);

View file

@ -83,13 +83,12 @@ struct rcu_lock_st {
/* The context we are being created against */
OSSL_LIB_CTX *ctx;
/* rcu generation counter for in-order retirement */
uint32_t id_ctr;
/* TODO: can be moved before id_ctr for better alignment */
/* Array of quiescent points for synchronization */
struct rcu_qp *qp_group;
/* rcu generation counter for in-order retirement */
uint32_t id_ctr;
/* Number of elements in qp_group array */
uint32_t group_count;
@ -124,10 +123,8 @@ struct rcu_lock_st {
CRYPTO_RWLOCK *rw_lock;
};
/* TODO: count should be unsigned, e.g uint32_t */
/* a negative value could result in unexpected behaviour */
static struct rcu_qp *allocate_new_qp_group(struct rcu_lock_st *lock,
int count)
uint32_t count)
{
struct rcu_qp *new =
OPENSSL_zalloc(sizeof(*new) * count);