vlib: complain if workers are configured twice 44/25944/2
authorVladimir Isaev <visaev@netgate.com>
Tue, 17 Mar 2020 09:30:11 +0000 (12:30 +0300)
committerDamjan Marion <dmarion@me.com>
Sat, 21 Mar 2020 12:09:38 +0000 (12:09 +0000)
Right now following configuration leads to crash:
cpu {
    corelist-workers 2
    workers 2
}

because threads count will be set to 2, but we have only
one core in coremask.

Type: fix
Signed-off-by: Vladimir Isaev <visaev@netgate.com>
Change-Id: Ia93b892733971e7c8ddfceaaec5f4eb8bf9063ac

src/vlib/threads.c

index e9d9cb5..a7d9155 100644 (file)
@@ -1299,6 +1299,10 @@ cpu_config (vlib_main_t * vm, unformat_input_t * input)
            return clib_error_return (0,
                                      "corelist cannot be set for '%s' threads",
                                      name);
+         if (tr->count)
+           return clib_error_return
+             (0, "core placement of '%s' threads is already configured",
+              name);
 
          tr->coremask = bitmap;
          tr->count = clib_bitmap_count_set_bits (tr->coremask);
@@ -1317,9 +1321,14 @@ cpu_config (vlib_main_t * vm, unformat_input_t * input)
            return clib_error_return (0, "no such thread type 3 '%s'", name);
 
          tr = (vlib_thread_registration_t *) p[0];
+
          if (tr->fixed_count)
            return clib_error_return
-             (0, "number of %s threads not configurable", tr->name);
+             (0, "number of '%s' threads not configurable", name);
+         if (tr->count)
+           return clib_error_return
+             (0, "number of '%s' threads is already configured", name);
+
          tr->count = count;
        }
       else