]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iommu/amd: Handle error path in amd_iommu_probe_device()
authorVasant Hegde <vasant.hegde@amd.com>
Wed, 28 Aug 2024 11:10:25 +0000 (11:10 +0000)
committerJoerg Roedel <jroedel@suse.de>
Wed, 4 Sep 2024 09:35:55 +0000 (11:35 +0200)
Do not try to set max_pasids in error path as dev_data is not allocated.

Fixes: a0c47f233e68 ("iommu/amd: Introduce iommu_dev_data.max_pasids")
Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
Reviewed-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Link: https://lore.kernel.org/r/20240828111029.5429-5-vasant.hegde@amd.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd/iommu.c

index f90fd106906c3c755a453dfe777d7d048e09c921..51b226b9e7274549830235077c9d8efd4bb681e0 100644 (file)
@@ -2187,11 +2187,12 @@ static struct iommu_device *amd_iommu_probe_device(struct device *dev)
                dev_err(dev, "Failed to initialize - trying to proceed anyway\n");
                iommu_dev = ERR_PTR(ret);
                iommu_ignore_device(iommu, dev);
-       } else {
-               amd_iommu_set_pci_msi_domain(dev, iommu);
-               iommu_dev = &iommu->iommu;
+               goto out_err;
        }
 
+       amd_iommu_set_pci_msi_domain(dev, iommu);
+       iommu_dev = &iommu->iommu;
+
        /*
         * If IOMMU and device supports PASID then it will contain max
         * supported PASIDs, else it will be zero.
@@ -2203,6 +2204,7 @@ static struct iommu_device *amd_iommu_probe_device(struct device *dev)
                                             pci_max_pasids(to_pci_dev(dev)));
        }
 
+out_err:
        iommu_completion_wait(iommu);
 
        return iommu_dev;