summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorReshma Pattan <reshma.pattan@intel.com>2016-03-25 15:13:44 +0000
committerThomas Monjalon <thomas.monjalon@6wind.com>2016-03-25 19:53:00 +0100
commita6b450805ba18ae5768dd6f303843f8b6807e97d (patch)
treeabe5d67e50333313024e956c9b9b281206bc0ce7 /examples
parent1a95fe0be196ba80a29d5fc74481060a3c9b31b8 (diff)
downloaddpdk-a6b450805ba18ae5768dd6f303843f8b6807e97d.zip
dpdk-a6b450805ba18ae5768dd6f303843f8b6807e97d.tar.gz
dpdk-a6b450805ba18ae5768dd6f303843f8b6807e97d.tar.xz
examples/l3fwd: fix validation for queue id of config tuple
Added validation for queue id of config parameter tuple. This validation enforces user to enter queue ids of a port from 0 and in sequence. This additional validation on queue ids avoids ixgbe crash caused by null rxq pointer access inside ixgbe_dev_rx_init. Reason for null rxq is, L3fwd application allocates memory only for queues passed by user. But rte_eth_dev_start tries to initialize rx queues in sequence from 0 to nb_rx_queues, which is not true and coredump while accessing the unallocated queue . Fixes: af75078fece3 ("first public release") Signed-off-by: Reshma Pattan <reshma.pattan@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/l3fwd/main.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c
index 792894f..97a1423 100644
--- a/examples/l3fwd/main.c
+++ b/examples/l3fwd/main.c
@@ -263,9 +263,14 @@ get_port_n_rx_queues(const uint8_t port)
uint16_t i;
for (i = 0; i < nb_lcore_params; ++i) {
- if (lcore_params[i].port_id == port &&
- lcore_params[i].queue_id > queue)
- queue = lcore_params[i].queue_id;
+ if (lcore_params[i].port_id == port) {
+ if (lcore_params[i].queue_id == queue+1)
+ queue = lcore_params[i].queue_id;
+ else
+ rte_exit(EXIT_FAILURE, "queue ids of the port %d must be"
+ " in sequence and must start with 0\n",
+ lcore_params[i].port_id);
+ }
}
return (uint8_t)(++queue);
}