From 009303dc06f8ecf4ed16c71e18c4e7fd40372eeb Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Tue, 29 Mar 2022 17:49:37 -0700 Subject: tls: use safe pool reallocs Type: improvement Signed-off-by: Florin Coras Change-Id: Ia2c771cbf826526d2d06b6da022509ab02917350 --- src/plugins/tlsmbedtls/tls_mbedtls.c | 3 ++- src/plugins/tlsopenssl/tls_openssl.c | 5 +++-- src/plugins/tlspicotls/tls_picotls.c | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/tlsmbedtls/tls_mbedtls.c b/src/plugins/tlsmbedtls/tls_mbedtls.c index 8d6b7ac5498..a6b968eac14 100644 --- a/src/plugins/tlsmbedtls/tls_mbedtls.c +++ b/src/plugins/tlsmbedtls/tls_mbedtls.c @@ -74,7 +74,8 @@ mbedtls_ctx_alloc (void) mbedtls_main_t *tm = &mbedtls_main; mbedtls_ctx_t **ctx; - pool_get (tm->ctx_pool[thread_index], ctx); + pool_get_aligned_safe (tm->ctx_pool[thread_index], ctx, + CLIB_CACHE_LINE_BYTES); if (!(*ctx)) *ctx = clib_mem_alloc (sizeof (mbedtls_ctx_t)); diff --git a/src/plugins/tlsopenssl/tls_openssl.c b/src/plugins/tlsopenssl/tls_openssl.c index 1e35f9d8e19..5ccc492328a 100644 --- a/src/plugins/tlsopenssl/tls_openssl.c +++ b/src/plugins/tlsopenssl/tls_openssl.c @@ -40,7 +40,8 @@ openssl_ctx_alloc_w_thread (u32 thread_index) openssl_main_t *om = &openssl_main; openssl_ctx_t **ctx; - pool_get (om->ctx_pool[thread_index], ctx); + pool_get_aligned_safe (om->ctx_pool[thread_index], ctx, 0); + if (!(*ctx)) *ctx = clib_mem_alloc (sizeof (openssl_ctx_t)); @@ -99,7 +100,7 @@ openssl_ctx_attach (u32 thread_index, void *ctx_ptr) session_handle_t sh; openssl_ctx_t **oc; - pool_get (om->ctx_pool[thread_index], oc); + pool_get_aligned_safe (om->ctx_pool[thread_index], oc, 0); /* Free the old instance instead of looking for an empty spot */ if (*oc) clib_mem_free (*oc); diff --git a/src/plugins/tlspicotls/tls_picotls.c b/src/plugins/tlspicotls/tls_picotls.c index afb48f1c72e..393f2bf9940 100644 --- a/src/plugins/tlspicotls/tls_picotls.c +++ b/src/plugins/tlspicotls/tls_picotls.c @@ -27,11 +27,11 @@ static ptls_key_exchange_algorithm_t *default_key_exchange[] = { static u32 picotls_ctx_alloc (void) { - u8 thread_id = vlib_get_thread_index (); + u32 thread_id = vlib_get_thread_index (); picotls_main_t *pm = &picotls_main; picotls_ctx_t **ctx; - pool_get (pm->ctx_pool[thread_id], ctx); + pool_get_aligned_safe (pm->ctx_pool[thread_id], ctx, CLIB_CACHE_LINE_BYTES); if (!(*ctx)) *ctx = clib_mem_alloc (sizeof (picotls_ctx_t)); -- cgit 1.2.3-korg