> From: Nicolin Chen <nicolinc@xxxxxxxxxx> > Sent: Tuesday, October 22, 2024 8:19 AM > > +static struct iommufd_hwpt_nested * > +iommufd_hwpt_nested_alloc_for_viommu(struct iommufd_viommu > *viommu, > + const struct iommu_user_data *user_data) probably "_for" can be skipped to reduce the name length > +{ > + struct iommufd_hwpt_nested *hwpt_nested; > + struct iommufd_hw_pagetable *hwpt; > + int rc; > + > + if (!viommu->ops || !viommu->ops->domain_alloc_nested) > + return ERR_PTR(-EOPNOTSUPP); > + > + hwpt_nested = __iommufd_object_alloc( > + viommu->ictx, hwpt_nested, IOMMUFD_OBJ_HWPT_NESTED, > common.obj); > + if (IS_ERR(hwpt_nested)) > + return ERR_CAST(hwpt_nested); > + hwpt = &hwpt_nested->common; > + > + hwpt_nested->viommu = viommu; > + hwpt_nested->parent = viommu->hwpt; > + refcount_inc(&viommu->obj.users); > + > + hwpt->domain = viommu->ops->domain_alloc_nested(viommu, > user_data); > + if (IS_ERR(hwpt->domain)) { > + rc = PTR_ERR(hwpt->domain); > + hwpt->domain = NULL; > + goto out_abort; > + } > + hwpt->domain->owner = viommu->iommu_dev->ops; > + > + if (WARN_ON_ONCE(hwpt->domain->type != > IOMMU_DOMAIN_NESTED)) { > + rc = -EINVAL; > + goto out_abort; > + } > + return hwpt_nested; > + > +out_abort: > + iommufd_object_abort_and_destroy(viommu->ictx, &hwpt->obj); > + return ERR_PTR(rc); > +} > + looks there missed a check on flags in this path.