summaryrefslogtreecommitdiff
path: root/drivers/iommu
diff options
context:
space:
mode:
authorLiam Mark <lmark@codeaurora.org>2016-09-13 14:52:27 -0700
committerLiam Mark <lmark@codeaurora.org>2016-09-14 13:13:27 -0700
commitb8bfe5bcc151c5b033a34ebf8a9a0b4e2af9d67f (patch)
treeaa41f23bc6aa85d538a8ecf23a856876b5e09a55 /drivers/iommu
parent9b82a4c5896632b62140d1ddda55638fea254007 (diff)
iommu: msm: use list_for_each_entry_safe for deletion
Use list_for_each_entry_safe to safely delete mappings while iterating over the mappings list. CRs-Fixed: 1067012 Change-Id: I5326ee8e58d291b1d9b07649b87632d7e9102e0d Signed-off-by: Liam Mark <lmark@codeaurora.org>
Diffstat (limited to 'drivers/iommu')
-rw-r--r--drivers/iommu/msm_dma_iommu_mapping.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/iommu/msm_dma_iommu_mapping.c b/drivers/iommu/msm_dma_iommu_mapping.c
index a035ebd5af7e..334f4e95c068 100644
--- a/drivers/iommu/msm_dma_iommu_mapping.c
+++ b/drivers/iommu/msm_dma_iommu_mapping.c
@@ -358,10 +358,12 @@ int msm_dma_unmap_all_for_dev(struct device *dev)
meta_node = rb_first(root);
while (meta_node) {
struct msm_iommu_map *iommu_map;
+ struct msm_iommu_map *iommu_map_next;
meta = rb_entry(meta_node, struct msm_iommu_meta, node);
mutex_lock(&meta->lock);
- list_for_each_entry(iommu_map, &meta->iommu_maps, lnode)
+ list_for_each_entry_safe(iommu_map, iommu_map_next,
+ &meta->iommu_maps, lnode)
if (iommu_map->dev == dev)
if (!kref_put(&iommu_map->ref,
msm_iommu_map_release))