Fix NULL pointer dereference on IOMMU domain destruction that happens
because clients list is being iterated unsafely and its elements are
getting deleted during the iteration.

Signed-off-by: Dmitry Osipenko <dig...@gmail.com>
Acked-by: Thierry Reding <tred...@nvidia.com>
---
 drivers/iommu/tegra-gart.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/iommu/tegra-gart.c b/drivers/iommu/tegra-gart.c
index a7a9400e0cd8..7fdd8b12efd5 100644
--- a/drivers/iommu/tegra-gart.c
+++ b/drivers/iommu/tegra-gart.c
@@ -260,9 +260,9 @@ static void gart_iommu_domain_free(struct iommu_domain 
*domain)
        if (gart) {
                spin_lock(&gart->client_lock);
                if (!list_empty(&gart->client)) {
-                       struct gart_client *c;
+                       struct gart_client *c, *tmp;
 
-                       list_for_each_entry(c, &gart->client, list)
+                       list_for_each_entry_safe(c, tmp, &gart->client, list)
                                __gart_iommu_detach_dev(domain, c->dev);
                }
                spin_unlock(&gart->client_lock);
-- 
2.20.0

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to