mbuf: ensure next pointer is set to null on free
The receive functions for packets do not modify the next pointer so the next pointer should always be cleared on mbuf free, just in case. The slow-path TX needs to clear it, and the standard mbuf free function also needs to clear it. Fast path TX does not handle chained mbufs so is unaffected Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
This commit is contained in:
parent
3043ce5011
commit
7f78e67701
@ -682,8 +682,10 @@ __rte_pktmbuf_prefree_seg(struct rte_mbuf *m)
|
||||
static inline void __attribute__((always_inline))
|
||||
rte_pktmbuf_free_seg(struct rte_mbuf *m)
|
||||
{
|
||||
if (likely(NULL != (m = __rte_pktmbuf_prefree_seg(m))))
|
||||
if (likely(NULL != (m = __rte_pktmbuf_prefree_seg(m)))) {
|
||||
m->next = NULL;
|
||||
__rte_mbuf_raw_free(m);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -145,6 +145,7 @@ ixgbe_tx_free_bufs(struct igb_tx_queue *txq)
|
||||
/* free buffers one at a time */
|
||||
if ((txq->txq_flags & (uint32_t)ETH_TXQ_FLAGS_NOREFCOUNT) != 0) {
|
||||
for (i = 0; i < txq->tx_rs_thresh; ++i, ++txep) {
|
||||
txep->mbuf->next = NULL;
|
||||
rte_mempool_put(txep->mbuf->pool, txep->mbuf);
|
||||
txep->mbuf = NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user