buffers: vallidate that buffer is allocated during buffer pool put 14/17214/6
authorDamjan Marion <damarion@cisco.com>
Thu, 31 Jan 2019 17:50:04 +0000 (18:50 +0100)
committerFlorin Coras <florin.coras@gmail.com>
Thu, 31 Jan 2019 22:25:44 +0000 (22:25 +0000)
Change-Id: I8044b34a37fe1994a8dfa1ca89929f3642c72e8d
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/plugins/dpdk/buffer.c
src/vlib/buffer_funcs.h

index 7f6c118..1894df4 100644 (file)
@@ -222,7 +222,7 @@ CLIB_MULTIARCH_FN (dpdk_ops_vpp_enqueue) (struct rte_mempool * mp,
     {
       vlib_get_buffer_indices_with_offset (vm, (void **) obj_table, bufs,
                                           n, sizeof (struct rte_mbuf));
-      vlib_buffer_pool_put (vm, buffer_pool_index, bufs, batch_size);
+      vlib_buffer_pool_put (vm, buffer_pool_index, bufs, n);
     }
 
   return 0;
index 37ddcd4..09ffd06 100644 (file)
@@ -635,7 +635,7 @@ vlib_buffer_alloc_to_ring_from_pool (vlib_main_t * vm, u32 * ring, u32 start,
   return n_alloc;
 }
 
-static void
+static_always_inline void
 vlib_buffer_pool_put (vlib_main_t * vm, u8 buffer_pool_index,
                      u32 * buffers, u32 n_buffers)
 {
@@ -643,6 +643,10 @@ vlib_buffer_pool_put (vlib_main_t * vm, u8 buffer_pool_index,
   vlib_buffer_pool_thread_t *bpt =
     vec_elt_at_index (bp->threads, vm->thread_index);
 
+  if (CLIB_DEBUG > 0)
+    vlib_buffer_validate_alloc_free (vm, buffers, n_buffers,
+                                    VLIB_BUFFER_KNOWN_ALLOCATED);
+
   vec_add_aligned (bpt->cached_buffers, buffers, n_buffers,
                   CLIB_CACHE_LINE_BYTES);
 
@@ -733,10 +737,6 @@ vlib_buffer_free_inline (vlib_main_t * vm, u32 * buffers, u32 n_buffers,
       vlib_buffer_copy_template (b[3], &bt);
       n_queue += 4;
 
-      if (CLIB_DEBUG > 0)
-       vlib_buffer_validate_alloc_free (vm, buffers, 4,
-                                        VLIB_BUFFER_KNOWN_ALLOCATED);
-
       vlib_buffer_validate (vm, b[0]);
       vlib_buffer_validate (vm, b[1]);
       vlib_buffer_validate (vm, b[2]);
@@ -786,9 +786,6 @@ vlib_buffer_free_inline (vlib_main_t * vm, u32 * buffers, u32 n_buffers,
 
       if (clib_atomic_sub_fetch (&b[0]->ref_count, 1) == 0)
        {
-         if (CLIB_DEBUG > 0)
-           vlib_buffer_validate_alloc_free (vm, &bi, 1,
-                                            VLIB_BUFFER_KNOWN_ALLOCATED);
          vlib_buffer_copy_template (b[0], &bt);
          queue[n_queue++] = bi;
        }