dpdk_buffer.c: Ensure that the mbuf reference count is as expected 45/145/2
authorKevin Paul Herbert <kph@cisco.com>
Wed, 16 Dec 2015 00:33:13 +0000 (16:33 -0800)
committerGerrit Code Review <gerrit@fd.io>
Wed, 27 Jan 2016 18:58:26 +0000 (18:58 +0000)
Add some more ASSERTs to track down improper frees.

Change-Id: I2bd4b69fb14f522c82e6006131b6ad982f6f7e6b
Signed-off-by: Kevin Paul Herbert <kph@cisco.com>
vlib/vlib/dpdk_buffer.c

index 68c1fcd..43612a8 100644 (file)
@@ -401,11 +401,13 @@ del_free_list (vlib_main_t * vm, vlib_buffer_free_list_t * f)
   for (i = 0; i < vec_len (f->unaligned_buffers); i++) {
       b = vlib_get_buffer (vm, f->unaligned_buffers[i]);
       mb = ((struct rte_mbuf *)b)-1;
+      ASSERT(rte_mbuf_refcnt_read(mb) == 1);
       rte_pktmbuf_free (mb);
   }
   for (i = 0; i < vec_len (f->aligned_buffers); i++) {
       b = vlib_get_buffer (vm, f->aligned_buffers[i]);
       mb = ((struct rte_mbuf *)b)-1;
+      ASSERT(rte_mbuf_refcnt_read(mb) == 1);
       rte_pktmbuf_free (mb);
   }
   vec_free (f->name);
@@ -723,6 +725,7 @@ vlib_buffer_free_inline (vlib_main_t * vm,
       else
         {
           mb = ((struct rte_mbuf *)b)-1;
+          ASSERT(rte_mbuf_refcnt_read(mb) == 1);
           rte_pktmbuf_free (mb);
         }
     }