> From: Jason Gunthorpe <jgg@xxxxxxxxxx> > Sent: Wednesday, October 26, 2022 2:12 AM > > +int iommufd_vfio_compat_ioas_id(struct iommufd_ctx *ictx, u32 > *out_ioas_id) > +{ > + struct iommufd_ioas *ioas = NULL; > + struct iommufd_ioas *out_ioas; > + > + ioas = iommufd_ioas_alloc(ictx); > + if (IS_ERR(ioas)) > + return PTR_ERR(ioas); I tried to find out where the auto-created compat_ioas is destroyed. Is my understanding correct that nobody holds a long-term users count on it then we expect it to be destroyed in iommufd release? If yes, probably worth adding a comment to explain this behavior. > + > + case IOMMU_VFIO_IOAS_SET: > + ioas = iommufd_get_ioas(ucmd, cmd->ioas_id); > + if (IS_ERR(ioas)) > + return PTR_ERR(ioas); > + xa_lock(&ucmd->ictx->objects); > + ucmd->ictx->vfio_ioas = ioas; > + xa_unlock(&ucmd->ictx->objects); > + iommufd_put_object(&ioas->obj); > + return 0; disallow changing vfio_ioas when it's already in-use e.g. has a list of hwpt attached?