Re: [PATCH v2] ice: Fix improper handling of refcount in ice_sriov_set_msix_vec_count()

Simon Horman
2024-09-07T13:52:08Z

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.