An assertion failure occurs in __rte_mbuf_raw_free() (called by a few PMDs) when compiling DPDK with CONFIG_RTE_LOG_LEVEL=RTE_LOG_DEBUG and starting applications with a log level high enough to trigger it.
While rte_mbuf_raw_alloc() sets refcount to 1, __rte_mbuf_raw_free() expects it to be 0. Considering users are not expected to reset the reference count to satisfy assert() and that raw functions are designed on purpose without safety belts, remove these checks. Signed-off-by: Adrien Mazarguil <adrien.mazarguil at 6wind.com> --- lib/librte_mbuf/rte_mbuf.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index 11fa06d..7070bb8 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -1108,7 +1108,6 @@ static inline struct rte_mbuf *rte_mbuf_raw_alloc(struct rte_mempool *mp) if (rte_mempool_get(mp, &mb) < 0) return NULL; m = (struct rte_mbuf *)mb; - RTE_ASSERT(rte_mbuf_refcnt_read(m) == 0); rte_mbuf_refcnt_set(m, 1); __rte_mbuf_sanity_check(m, 0); @@ -1133,7 +1132,6 @@ __rte_mbuf_raw_alloc(struct rte_mempool *mp) static inline void __attribute__((always_inline)) __rte_mbuf_raw_free(struct rte_mbuf *m) { - RTE_ASSERT(rte_mbuf_refcnt_read(m) == 0); rte_mempool_put(m->pool, m); } -- 2.1.4