On Tue, 30 Apr 2019 09:59:51 +0200 Pierre Morel <pmorel@xxxxxxxxxxxxx> wrote: > On 29/04/2019 18:07, Halil Pasic wrote: > > On Fri, 26 Apr 2019 15:01:26 +0200 > > Pierre Morel <pmorel@xxxxxxxxxxxxx> 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