examples/l3fwd: fix validation for queue id of config tuple
authorReshma Pattan <reshma.pattan@intel.com>
Fri, 25 Mar 2016 15:13:44 +0000 (15:13 +0000)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Fri, 25 Mar 2016 18:53:00 +0000 (19:53 +0100)
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>
examples/l3fwd/main.c

index 792894f..97a1423 100644 (file)
@@ -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);
 }