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.
Regards,
Pierre
Regards,
Halil
+ return ret;
}
--
Pierre Morel
Linux/KVM/QEMU in Böblingen - Germany