app/testpmd: fix crash when portmask is specified
If testpmd is invoked with portmask option like below, segmentation fault will occur. This patch fixes the issue. Reported-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
This commit is contained in:
parent
e34550c8b9
commit
ffc468ff3c
@ -579,20 +579,6 @@ init_config(void)
|
|||||||
socket_num);
|
socket_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Configuration of Ethernet ports. */
|
|
||||||
ports = rte_zmalloc("testpmd: ports",
|
|
||||||
sizeof(struct rte_port) * RTE_MAX_ETHPORTS,
|
|
||||||
RTE_CACHE_LINE_SIZE);
|
|
||||||
if (ports == NULL) {
|
|
||||||
rte_exit(EXIT_FAILURE,
|
|
||||||
"rte_zmalloc(%d struct rte_port) failed\n",
|
|
||||||
RTE_MAX_ETHPORTS);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* enabled allocated ports */
|
|
||||||
for (pid = 0; pid < nb_ports; pid++)
|
|
||||||
ports[pid].enabled = 1;
|
|
||||||
|
|
||||||
FOREACH_PORT(pid, ports) {
|
FOREACH_PORT(pid, ports) {
|
||||||
port = &ports[pid];
|
port = &ports[pid];
|
||||||
rte_eth_dev_info_get(pid, &port->dev_info);
|
rte_eth_dev_info_get(pid, &port->dev_info);
|
||||||
@ -1999,6 +1985,26 @@ init_port_dcb_config(portid_t pid,struct dcb_config *dcb_conf)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
init_port(void)
|
||||||
|
{
|
||||||
|
portid_t pid;
|
||||||
|
|
||||||
|
/* Configuration of Ethernet ports. */
|
||||||
|
ports = rte_zmalloc("testpmd: ports",
|
||||||
|
sizeof(struct rte_port) * RTE_MAX_ETHPORTS,
|
||||||
|
RTE_CACHE_LINE_SIZE);
|
||||||
|
if (ports == NULL) {
|
||||||
|
rte_exit(EXIT_FAILURE,
|
||||||
|
"rte_zmalloc(%d struct rte_port) failed\n",
|
||||||
|
RTE_MAX_ETHPORTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* enabled allocated ports */
|
||||||
|
for (pid = 0; pid < nb_ports; pid++)
|
||||||
|
ports[pid].enabled = 1;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char** argv)
|
main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
@ -2013,6 +2019,9 @@ main(int argc, char** argv)
|
|||||||
if (nb_ports == 0)
|
if (nb_ports == 0)
|
||||||
RTE_LOG(WARNING, EAL, "No probed ethernet devices\n");
|
RTE_LOG(WARNING, EAL, "No probed ethernet devices\n");
|
||||||
|
|
||||||
|
/* allocate port structures, and init them */
|
||||||
|
init_port();
|
||||||
|
|
||||||
set_def_fwd_config();
|
set_def_fwd_config();
|
||||||
if (nb_lcores == 0)
|
if (nb_lcores == 0)
|
||||||
rte_panic("Empty set of forwarding logical cores - check the "
|
rte_panic("Empty set of forwarding logical cores - check the "
|
||||||
|
Loading…
x
Reference in New Issue
Block a user