From 4d9df5cb3da12498ffd41ee2adddc97dfe31e626 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Mon, 6 Jan 2025 16:22:20 -0500 Subject: [PATCH] vcl: fix vls wrk index on fork Type: fix Change-Id: If634dac31fd54466428db0726ac441a1247985b8 Signed-off-by: Florin Coras --- src/vcl/vcl_locked.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/vcl/vcl_locked.c b/src/vcl/vcl_locked.c index a9992e9317c..e32e96ceaa5 100644 --- a/src/vcl/vcl_locked.c +++ b/src/vcl/vcl_locked.c @@ -416,7 +416,7 @@ vls_n_workers (void) return pool_elts (vlsm->workers); } -static void +static vls_worker_t * vls_worker_alloc (void) { vls_worker_t *wrk; @@ -427,6 +427,8 @@ vls_worker_alloc (void) wrk->vcl_wrk_index = vcl_get_worker_index (); vec_validate (wrk->pending_vcl_wrk_cleanup, 16); vec_reset_length (wrk->pending_vcl_wrk_cleanup); + + return wrk; } static void @@ -1879,6 +1881,7 @@ static void vls_app_fork_child_handler (void) { vcl_worker_t *parent_wrk; + vls_worker_t *vls_wrk; int parent_wrk_index; parent_wrk_index = vcl_get_worker_index (); @@ -1902,11 +1905,11 @@ vls_app_fork_child_handler (void) /* * Allocate/initialize vls worker and share sessions */ - vls_worker_alloc (); + vls_wrk = vls_worker_alloc (); /* Reset number of threads and set wrk index */ vlsl->vls_mt_n_threads = 1; - vlsl->vls_wrk_index = vcl_get_worker_index (); + vlsl->vls_wrk_index = vls_wrk - vlsm->workers; vlsl->select_mp_check = 0; clib_rwlock_init (&vlsl->vls_pool_lock); vls_mt_locks_init (); -- 2.16.6