X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fsvm%2Fsvm_fifo.c;h=e478c06e8915fa897af40c326ac423b9c38d3e5a;hb=52851e6aa9304054fd1059c8dd284abf8e532bf2;hp=fc2189c51764a306c02f9665990e5860d2e38912;hpb=b639b593372612fd3a55b3137b4fdd62df775d96;p=vpp.git diff --git a/src/svm/svm_fifo.c b/src/svm/svm_fifo.c index fc2189c5176..e478c06e891 100644 --- a/src/svm/svm_fifo.c +++ b/src/svm/svm_fifo.c @@ -201,14 +201,20 @@ svm_fifo_create (u32 data_size_in_bytes) memset (f, 0, sizeof (*f)); f->nitems = data_size_in_bytes; f->ooos_list_head = OOO_SEGMENT_INVALID_INDEX; + f->refcnt = 1; return (f); } void svm_fifo_free (svm_fifo_t * f) { - pool_free (f->ooo_segments); - clib_mem_free (f); + ASSERT (f->refcnt > 0); + + if (--f->refcnt == 0) + { + pool_free (f->ooo_segments); + clib_mem_free (f); + } } always_inline ooo_segment_t *