summaryrefslogtreecommitdiffstats
path: root/drivers/iommu/mtk_iommu_v1.c
diff options
context:
space:
mode:
authorJoerg Roedel <jroedel@suse.de>2019-01-23 08:46:29 +0100
committerJoerg Roedel <jroedel@suse.de>2019-01-23 13:51:05 +0100
commitda5d2748e4a4512237764d2a53bdf686eccee18b (patch)
tree7c6ed292218c557c28da3b8cf0319ece25ec79a2 /drivers/iommu/mtk_iommu_v1.c
parentiommu/vt-d: Fix memory leak in intel_iommu_put_resv_regions() (diff)
downloadlinux-da5d2748e4a4512237764d2a53bdf686eccee18b.tar.xz
linux-da5d2748e4a4512237764d2a53bdf686eccee18b.zip
iommu/mediatek: Use correct fwspec in mtk_iommu_add_device()
The mtk_iommu_add_device() function keeps the fwspec in an on-stack pointer and calls mtk_iommu_create_mapping(), which might change its source, dev->iommu_fwspec. This causes the on-stack pointer to be obsoleted and the device initialization to fail. Update the on-stack fwspec pointer after mtk_iommu_create_mapping() has been called. Reported-by: Frank Wunderlich <frank-w@public-files.de> Fixes: a9bf2eec5a6f ('iommu/mediatek: Use helper functions to access dev->iommu_fwspec') Tested-by: Frank Wunderlich <frank-w@public-files.de> Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'drivers/iommu/mtk_iommu_v1.c')
-rw-r--r--drivers/iommu/mtk_iommu_v1.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/iommu/mtk_iommu_v1.c b/drivers/iommu/mtk_iommu_v1.c
index 6ede4286b835..f60bdb85c4c0 100644
--- a/drivers/iommu/mtk_iommu_v1.c
+++ b/drivers/iommu/mtk_iommu_v1.c
@@ -442,6 +442,10 @@ static int mtk_iommu_add_device(struct device *dev)
iommu_spec.args_count = count;
mtk_iommu_create_mapping(dev, &iommu_spec);
+
+ /* dev->iommu_fwspec might have changed */
+ fwspec = dev_iommu_fwspec_get(dev);
+
of_node_put(iommu_spec.np);
}