net/bonding: fix deadloop when update RSS RETA

Message ID tencent_4FD49847E9C6112495FF444080E6C2D39F06@qq.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers
Series net/bonding: fix deadloop when update RSS RETA |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed

Commit Message

1913909813@qq.com Aug. 2, 2020, 12:27 p.m. UTC
  From: Zhiguang He <191390813@qq.com>

when parament reta_size < RTE_RETA_GROUP_SIZE,
reta_count will be 0. Then this function will
be deadloop

Fixes: 734ce47f71e0 ("bonding: support RSS dynamic configuration")
Cc: stable@dpdk.org

Signed-off-by: Zhiguang He <1913909813@qq.com>
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

Wei Hu (Xavier) Aug. 3, 2020, 2:23 a.m. UTC | #1
Hi,  Zhiguang He


On 2020/8/2 20:27, 1913909813@qq.com wrote:
> From: Zhiguang He <191390813@qq.com>
>
> when parament reta_size < RTE_RETA_GROUP_SIZE,
> reta_count will be 0. Then this function will
> be deadloop
>
> Fixes: 734ce47f71e0 ("bonding: support RSS dynamic configuration")
> Cc: stable@dpdk.org
>
> Signed-off-by: Zhiguang He <1913909813@qq.com>

Acked-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>

Thank you for fixing this issue.

Xavier
> ---
>   drivers/net/bonding/rte_eth_bond_pmd.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
> index 116e2f2..cdbd815 100644
> --- a/drivers/net/bonding/rte_eth_bond_pmd.c
> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
> @@ -2935,7 +2935,8 @@ struct bwg_slave {
>   		return -EINVAL;
>   
>   	 /* Copy RETA table */
> -	reta_count = reta_size / RTE_RETA_GROUP_SIZE;
> +	reta_count = (reta_size + RTE_RETA_GROUP_SIZE - 1) /
> +			RTE_RETA_GROUP_SIZE;
>   
>   	for (i = 0; i < reta_count; i++) {
>   		internals->reta_conf[i].mask = reta_conf[i].mask;
  
Thomas Monjalon Aug. 5, 2020, 3:49 p.m. UTC | #2
03/08/2020 04:23, Wei Hu (Xavier):
> Hi,  Zhiguang He
> 
> On 2020/8/2 20:27, 1913909813@qq.com wrote:
> > From: Zhiguang He <191390813@qq.com>
> >
> > when parament reta_size < RTE_RETA_GROUP_SIZE,
> > reta_count will be 0. Then this function will
> > be deadloop
> >
> > Fixes: 734ce47f71e0 ("bonding: support RSS dynamic configuration")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Zhiguang He <1913909813@qq.com>

This email is different of the one in From line:
	1913909813@qq.com
	191390813@qq.com
I will assume your correct email is a third one, Cc'ed:
	hezhiguang3@huawei.com


> Acked-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
> 
> Thank you for fixing this issue.

Applied with Huawei identity.
  

Patch

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 116e2f2..cdbd815 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -2935,7 +2935,8 @@  struct bwg_slave {
 		return -EINVAL;
 
 	 /* Copy RETA table */
-	reta_count = reta_size / RTE_RETA_GROUP_SIZE;
+	reta_count = (reta_size + RTE_RETA_GROUP_SIZE - 1) /
+			RTE_RETA_GROUP_SIZE;
 
 	for (i = 0; i < reta_count; i++) {
 		internals->reta_conf[i].mask = reta_conf[i].mask;