[dpdk-dev] [PATCH] net/bonding: fix stack overflow in selection logic

David Marchand david.marchand at redhat.com
Tue Jul 30 13:34:41 CEST 2019


On Tue, Jul 30, 2019 at 1:32 PM <kkanas at marvell.com> wrote:
>
> From: Krzysztof Kanas <kkanas at marvell.com>
>
> Bonding selection logic uses agg_bandwidth, agg_count indexed by port_id
> but those arrays are 8 entries long.
>
> Fixes: 6d72657ce379 ("net/bonding: add other aggregator modes")
> Cc: danielx.t.mrzyglod at intel.com
>
> Signed-off-by: Krzysztof Kanas <kkanas at marvell.com>
> ---
>  drivers/net/bonding/rte_eth_bond_8023ad.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c
> index 1e6a3fc7c641..a7c040e26931 100644
> --- a/drivers/net/bonding/rte_eth_bond_8023ad.c
> +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
> @@ -669,8 +669,8 @@ 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;
>         struct rte_eth_link link_info;
> --
> 2.21.0
>

I already sent the same patch.
Please see the comments if you want to take over this:
https://patchwork.dpdk.org/patch/51492/


-- 
David Marchand


More information about the dev mailing list