net/bonding: fix port ID check
Port validation should be prior to getting device data to avoid segment fault. This patch fixed the segment fault caused by invalid port using. Fixes:6d72657ce3
("net/bonding: add other aggregator modes") Fixes:112891cd27
("net/bonding: add dedicated HW queues for LACP control") Cc: stable@dpdk.org Signed-off-by: Junyu Jiang <junyux.jiang@intel.com> Acked-by: Chas Williams <chas3@att.com>
This commit is contained in:
parent
2eb5dce8c0
commit
588ae95e79
@ -1387,11 +1387,12 @@ rte_eth_bond_8023ad_agg_selection_set(uint16_t port_id,
|
||||
struct bond_dev_private *internals;
|
||||
struct mode8023ad_private *mode4;
|
||||
|
||||
if (valid_bonded_port_id(port_id) != 0)
|
||||
return -EINVAL;
|
||||
|
||||
bond_dev = &rte_eth_devices[port_id];
|
||||
internals = bond_dev->data->dev_private;
|
||||
|
||||
if (valid_bonded_port_id(port_id) != 0)
|
||||
return -EINVAL;
|
||||
if (internals->mode != 4)
|
||||
return -EINVAL;
|
||||
|
||||
@ -1408,11 +1409,12 @@ int rte_eth_bond_8023ad_agg_selection_get(uint16_t port_id)
|
||||
struct bond_dev_private *internals;
|
||||
struct mode8023ad_private *mode4;
|
||||
|
||||
if (valid_bonded_port_id(port_id) != 0)
|
||||
return -EINVAL;
|
||||
|
||||
bond_dev = &rte_eth_devices[port_id];
|
||||
internals = bond_dev->data->dev_private;
|
||||
|
||||
if (valid_bonded_port_id(port_id) != 0)
|
||||
return -EINVAL;
|
||||
if (internals->mode != 4)
|
||||
return -EINVAL;
|
||||
mode4 = &internals->mode4;
|
||||
@ -1665,9 +1667,14 @@ int
|
||||
rte_eth_bond_8023ad_dedicated_queues_enable(uint16_t port)
|
||||
{
|
||||
int retval = 0;
|
||||
struct rte_eth_dev *dev = &rte_eth_devices[port];
|
||||
struct bond_dev_private *internals = (struct bond_dev_private *)
|
||||
dev->data->dev_private;
|
||||
struct rte_eth_dev *dev;
|
||||
struct bond_dev_private *internals;
|
||||
|
||||
if (valid_bonded_port_id(port) != 0)
|
||||
return -EINVAL;
|
||||
|
||||
dev = &rte_eth_devices[port];
|
||||
internals = dev->data->dev_private;
|
||||
|
||||
if (check_for_bonded_ethdev(dev) != 0)
|
||||
return -1;
|
||||
@ -1689,9 +1696,14 @@ int
|
||||
rte_eth_bond_8023ad_dedicated_queues_disable(uint16_t port)
|
||||
{
|
||||
int retval = 0;
|
||||
struct rte_eth_dev *dev = &rte_eth_devices[port];
|
||||
struct bond_dev_private *internals = (struct bond_dev_private *)
|
||||
dev->data->dev_private;
|
||||
struct rte_eth_dev *dev;
|
||||
struct bond_dev_private *internals;
|
||||
|
||||
if (valid_bonded_port_id(port) != 0)
|
||||
return -EINVAL;
|
||||
|
||||
dev = &rte_eth_devices[port];
|
||||
internals = dev->data->dev_private;
|
||||
|
||||
if (check_for_bonded_ethdev(dev) != 0)
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user