> From: Nicolin Chen <nicol...@nvidia.com>
> 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.


Reply via email to