From e4ec1584ec1dbc0f2d0343d4cf9c91455059789b Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Tue, 13 Feb 2024 15:37:20 -0500 Subject: tls: mark ho done atomically after ctx init Make sure ctx is initialized before ho is marked as done. Type: fix Change-Id: If0525a9890a56e289e2ab006c669a9d64dc6505d Signed-off-by: Florin Coras (cherry picked from commit 0ded4890beaa3aa1f36c61ff6125d19582b25391) --- src/vnet/tls/tls.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vnet/tls/tls.c b/src/vnet/tls/tls.c index a27d731aca0..358e3a7b2ef 100644 --- a/src/vnet/tls/tls.c +++ b/src/vnet/tls/tls.c @@ -594,12 +594,13 @@ tls_session_connected_cb (u32 tls_app_index, u32 ho_ctx_index, u32 ctx_handle; ho_ctx = tls_ctx_half_open_get (ho_ctx_index); - ho_ctx->flags |= TLS_CONN_F_HO_DONE; ctx_handle = tls_ctx_alloc (ho_ctx->tls_ctx_engine); ctx = tls_ctx_get (ctx_handle); clib_memcpy_fast (ctx, ho_ctx, sizeof (*ctx)); + /* Half-open freed on tcp half-open cleanup notification */ + __atomic_fetch_or (&ho_ctx->flags, TLS_CONN_F_HO_DONE, __ATOMIC_RELEASE); ctx->c_thread_index = vlib_get_thread_index (); ctx->tls_ctx_handle = ctx_handle; -- cgit 1.2.3-korg