--- x/drivers/iommu/iommufd/hw_pagetable.c +++ y/drivers/iommu/iommufd/hw_pagetable.c @@ -110,8 +110,11 @@ iommufd_hw_pagetable_alloc(struct iommuf return hwpt; out_detach: - if (immediate_attach) + if (immediate_attach) { + mutex_lock(&idev->igroup->lock); iommufd_hw_pagetable_detach(idev); + mutex_unlock(&idev->igroup->lock); + } out_abort: iommufd_object_abort_and_destroy(ictx, &hwpt->obj); return ERR_PTR(rc);