From: Alvin Zhang Date: Wed, 25 Nov 2020 09:46:22 +0000 (+0800) Subject: test: fix buffer overflow in Tx burst X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=58325f094a059e8ef4e1085d322a46107aad468f;p=dpdk.git test: fix buffer overflow in Tx burst The Tx buffer may overflow when there is more than one port. Fixes: 002ade70e933 ("app/test: measure cycles per packet in Rx/Tx") Cc: stable@dpdk.org Signed-off-by: Alvin Zhang Acked-by: Jeff Guo Tested-by: Wei Ling --- diff --git a/app/test/test_pmd_perf.c b/app/test/test_pmd_perf.c index 4db816a360..3a248d512c 100644 --- a/app/test/test_pmd_perf.c +++ b/app/test/test_pmd_perf.c @@ -606,10 +606,10 @@ timeout: static int exec_burst(uint32_t flags, int lcore) { - unsigned i, portid, nb_tx = 0; + unsigned int portid, nb_tx = 0; struct lcore_conf *conf; uint32_t pkt_per_port; - int num, idx = 0; + int num, i, idx = 0; int diff_tsc; conf = &lcore_conf[lcore]; @@ -628,16 +628,14 @@ exec_burst(uint32_t flags, int lcore) rte_atomic64_set(&start, 1); /* start xmit */ + i = 0; while (num) { nb_tx = RTE_MIN(MAX_PKT_BURST, num); - for (i = 0; i < conf->nb_ports; i++) { - portid = conf->portlist[i]; - nb_tx = rte_eth_tx_burst(portid, 0, - &tx_burst[idx], nb_tx); - idx += nb_tx; - num -= nb_tx; - } - + portid = conf->portlist[i]; + nb_tx = rte_eth_tx_burst(portid, 0, &tx_burst[idx], nb_tx); + idx += nb_tx; + num -= nb_tx; + i = (i >= conf->nb_ports - 1) ? 0 : (i + 1); } sleep(5);