net/bonding:fix balance-xor link down stack overflow
Checks
Commit Message
When slave link down, deactivate_slave will internals->active_slaves
and internals->active_slave_count.Active_slave in bond_ethdev_rx_burst
may out of range in internals->active_slaves.It will get bond's port_id
cause stack overflow
Cc: stable@dpdk.org
Signed-off-by: jilei <jilei8@huawei.com>
---
drivers/net/bonding/rte_eth_bond_pmd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On 8/10/2021 8:50 AM, Min Hu (Connor) wrote:
> 在 2021/8/10 14:43, jilei 写道:
>> When slave link down, deactivate_slave will internals->active_slaves
>> and internals->active_slave_count.Active_slave in bond_ethdev_rx_burst
>> may out of range in internals->active_slaves.It will get bond's port_id
>> cause stack overflow
>>
>> Cc: stable@dpdk.org
>> Signed-off-by: jilei <jilei8@huawei.com>
>> ---
>> drivers/net/bonding/rte_eth_bond_pmd.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c
>> b/drivers/net/bonding/rte_eth_bond_pmd.c
>> index a6755661c4..46f2c42d60 100644
>> --- a/drivers/net/bonding/rte_eth_bond_pmd.c
>> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
>> @@ -82,7 +82,7 @@ bond_ethdev_rx_burst(void *queue, struct rte_mbuf
>> **bufs, uint16_t nb_pkts)
>> bufs + num_rx_total, nb_pkts);
>> num_rx_total += num_rx_slave;
>> nb_pkts -= num_rx_slave;
>> - if (++active_slave == slave_count)
>> + if (++active_slave >= slave_count)
>> active_slave = 0;
>> }
>>
>
> Hi,
> Your patch is OK, but the description is misleading and has
> syntax errors. Please fix it ,thanks.
>
Hi jilei,
The patch is waiting for a minor update from you, can you please send a
new version with the requested change?
Btw, please add your sign off in following format:
Signed-off-by: Name Surname <email@address>
Thanks,
ferruh
@@ -82,7 +82,7 @@ bond_ethdev_rx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
bufs + num_rx_total, nb_pkts);
num_rx_total += num_rx_slave;
nb_pkts -= num_rx_slave;
- if (++active_slave == slave_count)
+ if (++active_slave >= slave_count)
active_slave = 0;
}