On Mon, Oct 21, 2024 at 09:22:48AM -0300, Jason Gunthorpe wrote:
On Sat, Oct 19, 2024 at 06:42:30PM -0700, Nicolin Chen wrote:
But be mindful of this abort, it doesn't want to be inside the lock if it also gets the lock.. fail_nth should be updated to cover these new ioctls to look for tricky things like that
I added an abort() beside destroy():
+void iommufd_vdevice_abort(struct iommufd_object *obj) +{
struct iommufd_vdevice *old, *vdev =
container_of(obj, struct iommufd_vdevice, obj);
struct iommufd_viommu *viommu = vdev->viommu;
struct iommufd_device *idev = vdev->idev;
lockdep_assert_not_held(&idev->igroup->lock);
???
Oops. That's a typo from auto-completion.
+void iommufd_vdevice_destroy(struct iommufd_object *obj) +{
struct iommufd_vdevice *vdev =
container_of(obj, struct iommufd_vdevice, obj);
mutex_lock(&vdev->idev->igroup->lock);
iommufd_vdevice_abort(obj);
When we get it here??
LOCKDEP wasn't enabled when I tested it.. Just fixed and retested.
Thanks Nicolin