summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVladimir Smirnov <civil.over@gmail.com>2025-01-03 21:47:56 +0100
committerDamjan Marion <dmarion@0xa5.net>2025-01-20 14:42:53 +0000
commit26cb7184e1b2050ee86152be6fb6363cd7f0cc72 (patch)
tree04a3b9ff6358e53e1791a961b2b8846da0ea19ba
parent0fce01265182934c42dba801a6287120b86de161 (diff)
vlib: fail in runtime if workers > nelts
Type: fix With a release build, if you configure more than 55 workers, vpp will start, but will corrupt memory as a lot of internal datastrctures are allocated with assumption that there will be not more than FRAME_QUEUE_MAX_NELTS threads. Add a warning if amount of configured workers more than MAX_NELTS. Anticipate that next commit would add a compile-time configurable variable and name it VPP_MAX_THREADS. Change-Id: I015f4f9aa5e8b828c7d90c90142d7a7c1ce68f97 Signed-off-by: Vladimir Smirnov <civil.over@gmail.com>
-rw-r--r--src/vlib/threads.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/vlib/threads.c b/src/vlib/threads.c
index f3fcb4043a0..fa8d949d549 100644
--- a/src/vlib/threads.c
+++ b/src/vlib/threads.c
@@ -282,6 +282,11 @@ vlib_thread_init (vlib_main_t * vm)
tr->first_index = first_index;
first_index += tr->count;
n_vlib_mains += (tr->no_data_structure_clone == 0) ? tr->count : 0;
+ if (n_vlib_mains >= FRAME_QUEUE_MAX_NELTS)
+ return clib_error_return (0,
+ "configured amount of workers %u is"
+ " greater than VPP_MAX_WORKERS (%u)",
+ n_vlib_mains, FRAME_QUEUE_MAX_NELTS);
/* construct coremask */
if (tr->use_pthreads || !tr->count)