iommu/exynos: return 0 if iommu_attach_device() successes
authorCho KyongHo <pullip.cho@samsung.com>
Fri, 26 Jul 2013 11:31:01 +0000 (20:31 +0900)
committerChanho Park <chanho61.park@samsung.com>
Tue, 18 Nov 2014 02:42:24 +0000 (11:42 +0900)
iommu_attach_device() against exynos-iommu positive integer on success
if the caller calls iommu_attach_device() with the same iommu_domain
multiple times without call to iommu_detach_device() to inform the
caller how many calls to iommu_detach_device() to really detach iommu.

However the convention of the return value of success of common API is
zero, this patch makes iommu_attach_device() call against exynos-iommu
always return zero if the given device is successfully attached to
the given iommu_domain even though it is already attached to the same
iommu_domain.

Signed-off-by: Cho KyongHo <pullip.cho@samsung.com>
drivers/iommu/exynos-iommu.c

index 51e5b35..6eed6d6 100644 (file)
@@ -882,15 +882,16 @@ static int exynos_iommu_attach_device(struct iommu_domain *domain,
 
        spin_unlock_irqrestore(&priv->lock, flags);
 
-       if (ret < 0)
+       if (ret < 0) {
                dev_err(dev, "%s: Failed to attach IOMMU with pgtable %#lx\n",
                                __func__, __pa(priv->pgtable));
-       else
-               dev_dbg(dev, "%s: Attached IOMMU with pgtable 0x%lx%s\n",
-                                       __func__, __pa(priv->pgtable),
-                                       (ret == 0) ? "" : ", again");
+               return ret;
+       }
 
-       return ret;
+       dev_dbg(dev, "%s: Attached IOMMU with pgtable 0x%lx%s\n",
+               __func__, __pa(priv->pgtable), (ret == 0) ? "" : ", again");
+
+       return 0;
 }
 
 static void exynos_iommu_detach_device(struct iommu_domain *domain,