On Wed, Mar 20, 2019 at 2:26 PM Zhaohui (zhaohui, Polestar) < zhaoh...@huawei.com> wrote:
> Hi: > When the number of slave slave devices exceeds 8, it will cause > the array subscript to cross the boundary. > According to the suggestions, Modified array subscript to > RTE_MAX_ETHPORTS, and Changed uint8_t to uint16_t. Something like this: > > From 51a081ea88cca1599d458d8d1c7d9605a6eb3352 Mon Sep 17 00:00:00 2001 > From: zhaohui8 <zhaoh...@huawei.com> > Date: Wed, 20 Mar 2019 20:17:27 +0800 > Subject: [PATCH] net/bonding: fix Segfault when eal thread executing nic‘s > lsc event for mode 4 > > Change-Id: I6d800a3adf5ca51f295b607de879bcb0ccc20004 > --- > drivers/net/bonding/rte_eth_bond_8023ad.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c > b/drivers/net/bonding/rte_eth_bond_8023ad.c > index dd847c6..4d99239 100644 > --- a/drivers/net/bonding/rte_eth_bond_8023ad.c > +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c > @@ -638,7 +638,7 @@ > SM_FLAG_CLR(port, NTT); > } > -static uint8_t > +static uint16_t > max_index(uint64_t *a, int n) > { > if (n <= 0) > @@ -664,15 +664,15 @@ > * @param port_pos Port to assign. > */ > static void > -selection_logic(struct bond_dev_private *internals, uint8_t slave_id) > +selection_logic(struct bond_dev_private *internals, uint16_t slave_id) > { > struct port *agg, *port; > uint16_t slaves_count, new_agg_id, i, j = 0; > uint16_t *slaves; > - uint64_t agg_bandwidth[8] = {0}; > - uint64_t agg_count[8] = {0}; > + uint64_t agg_bandwidth[RTE_MAX_ETHPORTS] = {0}; > + uint64_t agg_count[RTE_MAX_ETHPORTS] = {0}; > uint16_t default_slave = 0; > - uint8_t mode_count_id, mode_band_id; > + uint16_t mode_count_id, mode_band_id; > struct rte_eth_link link_info; > slaves = internals->active_slaves; > @@ -806,7 +806,7 @@ > struct ether_addr slave_addr; > struct rte_mbuf *lacp_pkt = NULL; > - uint8_t i, slave_id; > + uint16_t i, slave_id; > > /* Update link status on each port */ > -- > 1.9.5.msysgit.0 > > Oh, I had missed this [8] array, good catch. For the slave id on 16bits, I sent this earlier: http://patchwork.dpdk.org/patch/51387/ And I have other fixes for 802.3ad that I will send once properly tested. -- David Marchand