There will be a segfault when Rx burst size is greater than
MAX_PKT_BURST of memif. Fix the issue by correcting the
wrong mbuf index in eth_memif_rx, which results in accessing
invalid memory address.

Bugzilla ID: 1273
Fixes: aa17df860891 ("net/memif: add a Rx fast path")
Cc: [email protected]

Signed-off-by: Joyce Kong <[email protected]>
Reviewed-by: Feifei Wang <[email protected]>
Reviewed-by: Ruifeng Wang <[email protected]>
---
 drivers/net/memif/rte_eth_memif.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/memif/rte_eth_memif.c 
b/drivers/net/memif/rte_eth_memif.c
index 6a8ff5b4eb..f595656af5 100644
--- a/drivers/net/memif/rte_eth_memif.c
+++ b/drivers/net/memif/rte_eth_memif.c
@@ -356,7 +356,7 @@ eth_memif_rx(void *queue, struct rte_mbuf **bufs, uint16_t 
nb_pkts)
                rx_pkts = 0;
                pkts = nb_pkts < MAX_PKT_BURST ? nb_pkts : MAX_PKT_BURST;
                while (n_slots && rx_pkts < pkts) {
-                       mbuf_head = mbufs[n_rx_pkts];
+                       mbuf_head = mbufs[rx_pkts];
                        mbuf = mbuf_head;
 
 next_slot1:
-- 
2.25.1

Reply via email to