net/bonding: fix dead loop on RSS RETA update
authorZhiguang He <hezhiguang3@huawei.com>
Sun, 2 Aug 2020 12:27:27 +0000 (20:27 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 5 Aug 2020 15:51:49 +0000 (17:51 +0200)
When parameter 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 <hezhiguang3@huawei.com>
Acked-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
drivers/net/bonding/rte_eth_bond_pmd.c

index 116e2f2..cdbd815 100644 (file)
@@ -2935,7 +2935,8 @@ bond_ethdev_rss_reta_update(struct rte_eth_dev *dev,
                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;