From: Eric Joyner <[email protected]>

Check the return value from ice_vsi_rebuild() and prevent the usage of
incorrectly configured VSI.

Reviewed-by: Michal Swiatkowski <[email protected]>
Reviewed-by: Przemek Kitszel <[email protected]>
Signed-off-by: Eric Joyner <[email protected]>
Signed-off-by: Karen Ostrowska <[email protected]>
---
 drivers/net/ethernet/intel/ice/ice_main.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c 
b/drivers/net/ethernet/intel/ice/ice_main.c
index f60c022f7960..e8c30b1730a6 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -4135,15 +4135,23 @@ int ice_vsi_recfg_qs(struct ice_vsi *vsi, int new_rx, 
int new_tx, bool locked)
 
        /* set for the next time the netdev is started */
        if (!netif_running(vsi->netdev)) {
-               ice_vsi_rebuild(vsi, ICE_VSI_FLAG_NO_INIT);
+               err = ice_vsi_rebuild(vsi, ICE_VSI_FLAG_NO_INIT);
+               if (err)
+                       goto rebuild_err;
                dev_dbg(ice_pf_to_dev(pf), "Link is down, queue count change 
happens when link is brought up\n");
                goto done;
        }
 
        ice_vsi_close(vsi);
-       ice_vsi_rebuild(vsi, ICE_VSI_FLAG_NO_INIT);
+       err = ice_vsi_rebuild(vsi, ICE_VSI_FLAG_NO_INIT);
+       if (err)
+               goto rebuild_err;
+
        ice_pf_dcb_recfg(pf, locked);
        ice_vsi_open(vsi);
+
+rebuild_err:
+       dev_err(ice_pf_to_dev(pf), "Error during VSI rebuild: %d. Unload and 
reload the driver.\n", err);
 done:
        clear_bit(ICE_CFG_BUSY, pf->state);
        return err;
-- 
2.31.1

Reply via email to