On Sat, Sep 07, 2024 at 02:40:10PM +0200, Markus Elfring wrote: > … > > +++ b/drivers/net/ethernet/intel/ice/ice_sriov.c > > @@ -1096,8 +1096,10 @@ int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count) > > return -ENOENT; > > > > vsi = ice_get_vf_vsi(vf); > > - if (!vsi) > > + if (!vsi) { > > + ice_put_vf(vf); > > return -ENOENT; > > + } > > > > prev_msix = vf->num_msix; > > prev_queues = vf->num_vf_qs; > > @@ -1142,8 +1144,10 @@ int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count) > > vf->num_msix = prev_msix; > > vf->num_vf_qs = prev_queues; > > vf->first_vector_idx = ice_sriov_get_irqs(pf, vf->num_msix); > > - if (vf->first_vector_idx < 0) > > + if (vf->first_vector_idx < 0) { > > + ice_put_vf(vf); > > return -EINVAL; > > + } > > > > if (needs_rebuild) { > > ice_vf_reconfig_vsi(vf); > > Would you like to collaborate with any goto chains according to > the desired completion of exception handling? Yes, I agree that might be nice. But the changes made by this patch are consistent with the exiting error handling in this function. And as a fix, this minimal approach seems appropriate to me. IOW, I believe clean-up should be separated from fixes in this case.