From: Edwin Brossette <edwin.brosse...@6wind.com>

As per the rte_mbuf API: the driver is responsible of initializing all
the required fields. This is not done at qede alloc, meaning there can
be garbage data in mbufs memory, although this garbage data should be
overwritten when the mbufs are used. Since a sanity check is done when
freeing the queues, its possible some remaining garbage data causes a
panic when trying to release the queues if some mbufs are being
processed.

Use rte_pktmbuf_raw_free() instead of rte_pktmbuf_free() as the sanity
check is more relaxed.

Fixes: 2ea6f76aff40 ("qede: add core driver")
CC: sta...@dpdk.org

Signed-off-by: Edwin Brossette <edwin.brosse...@6wind.com>
Acked-by: Didier Pallard <didier.pall...@6wind.com>
---
 drivers/net/qede/qede_rxtx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index c764e3d83763..601fcb30b357 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -305,7 +305,7 @@ static void qede_rx_queue_release_mbufs(struct 
qede_rx_queue *rxq)
        if (rxq->sw_rx_ring) {
                for (i = 0; i < rxq->nb_rx_desc; i++) {
                        if (rxq->sw_rx_ring[i]) {
-                               rte_pktmbuf_free(rxq->sw_rx_ring[i]);
+                               rte_mbuf_raw_free(rxq->sw_rx_ring[i]);
                                rxq->sw_rx_ring[i] = NULL;
                        }
                }
-- 
2.35.0.4.g44a5d4affccf

Reply via email to