From: Peng Zhang <peng.zh...@corigine.com>

When the number of VF representor ports is bigger than
the number of VF ports, there will be segment fault.

Fix this by adding the check logic.

Fixes: e1124c4f8a45 ("net/nfp: add flower representor framework")
Cc: chaoyong...@corigine.com
Cc: sta...@dpdk.org

Signed-off-by: Peng Zhang <peng.zh...@corigine.com>
Reviewed-by: Chaoyong He <chaoyong...@corigine.com>
Reviewed-by: Long Wu <long...@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower_representor.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c 
b/drivers/net/nfp/flower/nfp_flower_representor.c
index e6fef45ddd..086dbc58e3 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.c
+++ b/drivers/net/nfp/flower/nfp_flower_representor.c
@@ -959,6 +959,11 @@ nfp_flower_repr_create(struct nfp_app_fw_flower 
*app_fw_flower,
        app_fw_flower->num_phyport_reprs = pf_dev->total_phyports;
        app_fw_flower->num_vf_reprs = eth_da.nb_representor_ports -
                        pf_dev->total_phyports - 1;
+       if (pf_dev->max_vfs != 0 && pf_dev->sriov_vf < 
app_fw_flower->num_vf_reprs) {
+               PMD_INIT_LOG(ERR, "The VF repr nums %d is bigger than VF nums 
%d",
+                               app_fw_flower->num_vf_reprs, pf_dev->sriov_vf);
+               return -ERANGE;
+       }
 
        PMD_INIT_LOG(INFO, "%d number of VF reprs", 
app_fw_flower->num_vf_reprs);
        PMD_INIT_LOG(INFO, "%d number of phyport reprs", 
app_fw_flower->num_phyport_reprs);
-- 
2.39.1

Reply via email to