From: Joseph Wong <[email protected]>

In bnxt_alloc_vf_info(), vf_info pointer needs to be assigned prior to
the nested allocation operations. If an error occurs during the nested
allocations, the cleanup function bnxt_free_vf_info() needs the vf_info
pointer to correctly free the resources.

Fixes: 01406837bf49 ("net/bnxt: fix VF info allocation")
Cc: [email protected]

Signed-off-by: Joseph Wong <[email protected]>
Signed-off-by: Mohammad Shuab Siddique <[email protected]>
---
 drivers/net/bnxt/bnxt_hwrm.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index dee35758e1..52c75c64de 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -1079,6 +1079,7 @@ static int bnxt_alloc_vf_info(struct bnxt *bp, uint16_t 
max_vfs)
        }
 
        bp->pf->max_vfs = max_vfs;
+       bp->pf->vf_info = vf_info;
        for (i = 0; i < max_vfs; i++) {
                vf_info[i].fid = bp->pf->first_vf_id + i;
                vf_info[i].vlan_table = rte_zmalloc("VF VLAN table",
@@ -1100,8 +1101,6 @@ static int bnxt_alloc_vf_info(struct bnxt *bp, uint16_t 
max_vfs)
                STAILQ_INIT(&vf_info[i].filter);
        }
 
-       bp->pf->vf_info = vf_info;
-
        return 0;
 err:
        bnxt_free_vf_info(bp);
-- 
2.47.3

Reply via email to