summaryrefslogtreecommitdiffstats
path: root/src/vlib
diff options
context:
space:
mode:
authorBenoît Ganne <bganne@cisco.com>2019-08-30 16:20:12 +0200
committerAndrew Yourtchenko <ayourtch@gmail.com>2019-10-08 06:39:27 +0000
commit11eb8e03ae5af37bc3b4c11ed5407343756ffcb4 (patch)
tree3ff8ca338a1a6fb9693a79bbc45b98c3b602a99b /src/vlib
parent07228c09a63316f9a9551ed392df8a1e00d96db6 (diff)
vlib: fix old nodes vector overflow in refork
Type: fix Change-Id: I81c4cf0ce87288bb2d3c7b9f31e9419290d588b4 Signed-off-by: Benoît Ganne <bganne@cisco.com> (cherry picked from commit 5517bd34535e4ffffb838a835bb95ddcb77e2bba)
Diffstat (limited to 'src/vlib')
-rw-r--r--src/vlib/threads.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/src/vlib/threads.c b/src/vlib/threads.c
index d5f247abb95..07e1d79cf4c 100644
--- a/src/vlib/threads.c
+++ b/src/vlib/threads.c
@@ -1060,11 +1060,7 @@ vlib_worker_thread_node_refork (void)
clib_mem_alloc_no_fail (vec_len (nm->nodes) * sizeof (*new_n_clone));
for (j = 0; j < vec_len (nm->nodes); j++)
{
- vlib_node_t *old_n_clone;
- vlib_node_t *new_n;
-
- new_n = nm->nodes[j];
- old_n_clone = old_nodes_clone[j];
+ vlib_node_t *new_n = nm->nodes[j];
clib_memcpy_fast (new_n_clone, new_n, sizeof (*new_n));
/* none of the copied nodes have enqueue rights given out */
@@ -1080,6 +1076,7 @@ vlib_worker_thread_node_refork (void)
}
else
{
+ vlib_node_t *old_n_clone = old_nodes_clone[j];
/* Copy stats if the old data is valid */
clib_memcpy_fast (&new_n_clone->stats_total,
&old_n_clone->stats_total,