diff options
author | Vladimir Smirnov <civil.over@gmail.com> | 2025-01-03 21:47:56 +0100 |
---|---|---|
committer | Damjan Marion <dmarion@0xa5.net> | 2025-01-20 14:42:53 +0000 |
commit | 26cb7184e1b2050ee86152be6fb6363cd7f0cc72 (patch) | |
tree | 04a3b9ff6358e53e1791a961b2b8846da0ea19ba | |
parent | 0fce01265182934c42dba801a6287120b86de161 (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.c | 5 |
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) |