app/testpmd: fix packet burst spreading stats
RX/TX functions (rte_eth_rx_burst/rte_eth_tx_burst) get 'nb_pkts' argument, which specifies the maximum number to receive/transmit. It can be 0..nb_pkts, meaning nb_pkts+1 options. Testpmd can provide statistics of the burst sizes ('set record-burst-stats on') by incrementing an array cell of index <burst-size>. This array is mistakenly [MAX_PKT_BURST] size. Receiving the maximum burst will cause out of bound write. Enlarge the spread stats array by one cell to fix it. Fixes: af75078fece3 ("first public release") Cc: stable@dpdk.org Signed-off-by: Eli Britstein <elibr@nvidia.com> Reviewed-by: Matan Azrad <matan@nvidia.com> Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
This commit is contained in:
parent
2fc3e696a7
commit
6a8b64fd5e
@ -1879,7 +1879,7 @@ pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs)
|
|||||||
pktnb_stats[0] = 0;
|
pktnb_stats[0] = 0;
|
||||||
|
|
||||||
/* Find the next 2 burst sizes with highest occurrences. */
|
/* Find the next 2 burst sizes with highest occurrences. */
|
||||||
for (nb_pkt = 1; nb_pkt < MAX_PKT_BURST; nb_pkt++) {
|
for (nb_pkt = 1; nb_pkt < MAX_PKT_BURST + 1; nb_pkt++) {
|
||||||
nb_burst = pbs->pkt_burst_spread[nb_pkt];
|
nb_burst = pbs->pkt_burst_spread[nb_pkt];
|
||||||
|
|
||||||
if (nb_burst == 0)
|
if (nb_burst == 0)
|
||||||
|
@ -96,7 +96,7 @@ enum {
|
|||||||
* that are recorded for each forwarding stream.
|
* that are recorded for each forwarding stream.
|
||||||
*/
|
*/
|
||||||
struct pkt_burst_stats {
|
struct pkt_burst_stats {
|
||||||
unsigned int pkt_burst_spread[MAX_PKT_BURST];
|
unsigned int pkt_burst_spread[MAX_PKT_BURST + 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Information for a given RSS type. */
|
/** Information for a given RSS type. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user