From 4be06219012181c6f500c8f23440baaf7d4d3618 Mon Sep 17 00:00:00 2001 From: Vasily Philipov Date: Wed, 5 Jul 2017 14:49:22 +0300 Subject: [PATCH] net/mlx4: fix mbuf poisoning in debug code In debug mode, all mbuf ol_flags are temporarily enabled while sitting in the Rx queue to detect otherwise silent data corruption, however some of them are special (indirect and control) and must be cleared before returning mbufs to the pool to avoid crashing. Fixes: 7fae69eeff13 ("mlx4: new poll mode driver") CC: stable@dpdk.org Signed-off-by: Vasily Philipov Acked-by: Adrien Mazarguil --- drivers/net/mlx4/mlx4.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index 83110d466b..53a8f25230 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -3002,6 +3002,13 @@ mlx4_rx_burst_sp(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) NB_SEGS(rep) = 0x2a; PORT(rep) = 0x2a; rep->ol_flags = -1; + /* + * Clear special flags in mbuf to avoid + * crashing while freeing. + */ + rep->ol_flags &= + ~(uint64_t)(IND_ATTACHED_MBUF | + CTRL_MBUF_FLAG); #endif assert(rep->buf_len == seg->buf_len); /* Reconfigure sge to use rep instead of seg. */ -- 2.20.1