VPP-893: handle multiple simultaneous event registrations 71/7371/2
authorDave Barach <dave@barachs.net>
Fri, 30 Jun 2017 12:46:24 +0000 (08:46 -0400)
committerFlorin Coras <florin.coras@gmail.com>
Fri, 30 Jun 2017 16:24:18 +0000 (16:24 +0000)
Change-Id: I8cd90820624987dbef848935e2de86fa66a86c17
Signed-off-by: Dave Barach <dave@barachs.net>
src/vppinfra/elog.c
src/vppinfra/elog.h

index 12e3f5d..182ca12 100644 (file)
@@ -108,6 +108,13 @@ elog_event_type_register (elog_main_t * em, elog_event_type_t * t)
 
   elog_lock (em);
 
+  /* Multiple simultaneous registration attempts, */
+  if (t->type_index_plus_one > 0)
+    {
+      elog_unlock (em);
+      return t->type_index_plus_one - 1;
+    }
+
   l = vec_len (em->event_types);
 
   t->type_index_plus_one = 1 + l;
index 359868d..05085b2 100644 (file)
@@ -309,7 +309,6 @@ elog_event_data_inline (elog_main_t * em,
        track_index = elog_track_register (em, track);
     }
 
-  ASSERT (type_index < vec_len (em->event_types));
   ASSERT (track_index < vec_len (em->tracks));
   ASSERT (is_pow2 (vec_len (em->event_ring)));