On 2026/9/28 21:08, Tomasz Lichwala wrote:


On 28.09.2026 08:53, Linkui Xiao wrote:

diff --git a/drivers/net/ethernet/intel/ice/ice_sriov.c 
b/drivers/net/ethernet/intel/ice/ice_sriov.c
index 95abc6704820..df84dbe12cba 100644
--- a/drivers/net/ethernet/intel/ice/ice_sriov.c
+++ b/drivers/net/ethernet/intel/ice/ice_sriov.c
@@ -446,8 +446,10 @@ static int ice_init_vf_vsi_res(struct ice_vf *vf)
                return -ENOMEM;
vsi = ice_vf_vsi_setup(vf);
-       if (!vsi)
-               return -ENOMEM;
+       if (!vsi) {
+               err = -ENOMEM;
+               goto free_irqs;
+       }
err = ice_vf_init_host_cfg(vf, vsi);
        if (err)
@@ -457,6 +459,9 @@ static int ice_init_vf_vsi_res(struct ice_vf *vf)
release_vsi:
        ice_vf_vsi_release(vf);
+free_irqs:
+       ice_virt_free_irqs(pf, vf->first_vector_idx, vf->num_msix);
+
        return err;
  }
@@ -490,6 +495,8 @@ static int ice_start_vfs(struct ice_pf *pf)
                                dev_err(ice_pf_to_dev(pf), "Failed to attach VF %d 
to eswitch, error %d",
                                        vf->vf_id, retval);
                                ice_vf_vsi_release(vf);
+                               ice_virt_free_irqs(pf, vf->first_vector_idx,
+                                                  vf->num_msix);

Nit: For consistency with the teardown: loop (which frees IRQs before releasing 
the VSI), consider swapping the order here too - currently this branch releases 
the VSI first, then frees IRQs, the opposite order. Not functionally 
significant, just readability.

Thanks for the review, Tomasz.

Agreed this is only a readability nit. The two calls are independent and
the current order is functionally safe, so I'll keep v2 as is.

No v3 planned for this change.

Thanks,
Linkui

                                goto teardown;
                        }
                }

Reviewed-by: Tomasz Lichwala <[email protected]>


Reply via email to