iommu/arm-smmu-v3-sva: Remove unused iommu_sva handle
authorMichael Shavit <mshavit@google.com>
Tue, 5 Sep 2023 11:49:12 +0000 (19:49 +0800)
committerWill Deacon <will@kernel.org>
Thu, 12 Oct 2023 17:37:06 +0000 (18:37 +0100)
The __arm_smmu_sva_bind function returned an unused iommu_sva handle
that can be removed.

Signed-off-by: Michael Shavit <mshavit@google.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/20230905194849.v1.1.Ib483f67c9e2ad90ea2254b4b5ac696e4b68aa638@changeid
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c

index df66fe43a9853fd8695b1a69ca0c4e92ae6db972..ce895c5ce42e8b440962818486f9544a81e4d34c 100644 (file)
@@ -25,7 +25,6 @@ struct arm_smmu_mmu_notifier {
 #define mn_to_smmu(mn) container_of(mn, struct arm_smmu_mmu_notifier, mn)
 
 struct arm_smmu_bond {
-       struct iommu_sva                sva;
        struct mm_struct                *mm;
        struct arm_smmu_mmu_notifier    *smmu_mn;
        struct list_head                list;
@@ -376,8 +375,7 @@ static void arm_smmu_mmu_notifier_put(struct arm_smmu_mmu_notifier *smmu_mn)
        arm_smmu_free_shared_cd(cd);
 }
 
-static struct iommu_sva *
-__arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm)
+static int __arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm)
 {
        int ret;
        struct arm_smmu_bond *bond;
@@ -386,7 +384,7 @@ __arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm)
        struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
 
        if (!master || !master->sva_enabled)
-               return ERR_PTR(-ENODEV);
+               return -ENODEV;
 
        /* If bind() was already called for this {dev, mm} pair, reuse it. */
        list_for_each_entry(bond, &master->bonds, list) {
@@ -398,10 +396,9 @@ __arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm)
 
        bond = kzalloc(sizeof(*bond), GFP_KERNEL);
        if (!bond)
-               return ERR_PTR(-ENOMEM);
+               return -ENOMEM;
 
        bond->mm = mm;
-       bond->sva.dev = dev;
        refcount_set(&bond->refs, 1);
 
        bond->smmu_mn = arm_smmu_mmu_notifier_get(smmu_domain, mm);
@@ -411,11 +408,11 @@ __arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm)
        }
 
        list_add(&bond->list, &master->bonds);
-       return &bond->sva;
+       return 0;
 
 err_free_bond:
        kfree(bond);
-       return ERR_PTR(ret);
+       return ret;
 }
 
 bool arm_smmu_sva_supported(struct arm_smmu_device *smmu)
@@ -593,13 +590,10 @@ static int arm_smmu_sva_set_dev_pasid(struct iommu_domain *domain,
                                      struct device *dev, ioasid_t id)
 {
        int ret = 0;
-       struct iommu_sva *handle;
        struct mm_struct *mm = domain->mm;
 
        mutex_lock(&sva_lock);
-       handle = __arm_smmu_sva_bind(dev, mm);
-       if (IS_ERR(handle))
-               ret = PTR_ERR(handle);
+       ret = __arm_smmu_sva_bind(dev, mm);
        mutex_unlock(&sva_lock);
 
        return ret;