iommu/tegra-smmu: Pass correct fwnode to iommu_fwspec_init()
authorWill Deacon <will@kernel.org>
Fri, 12 Jul 2024 15:35:25 +0000 (16:35 +0100)
committerWill Deacon <will@kernel.org>
Fri, 12 Jul 2024 15:36:54 +0000 (16:36 +0100)
iommu_fwspec_init() expects to receive the fwnode corresponding to the
IOMMU device, not the fwnode corresponding to the client device being
probed.

Fix arm_smmu_configure() to pass the correct fwnode to
iommu_fwspec_init().

Reported-by: Jon Hunter <jonathanh@nvidia.com>
Suggested-by: Robin Murphy <robin.murphy@arm.com>
Link: https://lore.kernel.org/r/0eec5f84-6b39-43ba-ab2f-914688a5cf45@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/tegra-smmu.c

index f86c7ae91814ff697c8f8b63c9fc183d0e74fd08..c0c6dbd87fca987527f4aa8e8e37e3b78e7cb001 100644 (file)
@@ -837,7 +837,7 @@ static int tegra_smmu_configure(struct tegra_smmu *smmu, struct device *dev,
        const struct iommu_ops *ops = smmu->iommu.ops;
        int err;
 
-       err = iommu_fwspec_init(dev, &dev->of_node->fwnode, ops);
+       err = iommu_fwspec_init(dev, &smmu->dev->of_node->fwnode, ops);
        if (err < 0) {
                dev_err(dev, "failed to initialize fwspec: %d\n", err);
                return err;