On Tue, 30 Apr 2019 09:59:51 +0200
Pierre Morel <[email protected]> wrote:

> On 29/04/2019 18:07, Halil Pasic wrote:
> > On Fri, 26 Apr 2019 15:01:26 +0200
> > Pierre Morel <[email protected]> wrote:
> > 
> >> @@ -858,7 +887,17 @@ static int vfio_ap_mdev_open(struct mdev_device *mdev)
> >>            return ret;
> >>    }
> >>   
> >> -  return 0;
> >> +  matrix_mdev->iommu_notifier.notifier_call = vfio_ap_mdev_iommu_notifier;
> >> +  events = VFIO_IOMMU_NOTIFY_DMA_UNMAP;
> >> +  ret = vfio_register_notifier(mdev_dev(mdev), VFIO_IOMMU_NOTIFY,
> >> +                               &events, &matrix_mdev->iommu_notifier);
> >> +  if (!ret)
> >> +          return ret;
> >> +
> >> +  vfio_unregister_notifier(mdev_dev(mdev), VFIO_GROUP_NOTIFY,
> >> +                           &matrix_mdev->group_notifier);
> >> +  module_put(THIS_MODULE);
> > 
> > Can you please explain this module_put() here? I don't see anything in
> > the cover letter.
> 
> May be you should have a look at the sources or the original patch 
> series of Tony, there is a try_module_get() at the beginning of open to 
> make sure that the module is not taken away while in use by the guest.
> 
> In the case we failed to open the mediated device we let fall the reference.
> 

Right, my bad. I did not notice we were on the error recovery path.

Regards,
Halil

Reply via email to