msm: iommu: Check if device is already attached
authorStepan Moskovchenko <stepanm@codeaurora.org>
Sat, 13 Nov 2010 03:29:56 +0000 (19:29 -0800)
committerDaniel Walker <dwalker@codeaurora.org>
Wed, 1 Dec 2010 00:03:51 +0000 (16:03 -0800)
An IOMMU device can only be attached to one IOMMU domain at
any given time. Check whether the device is already
attached to a domain before allowing it to be attached to
another domain. If so, return busy.

Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
Signed-off-by: Daniel Walker <dwalker@codeaurora.org>
arch/arm/mach-msm/iommu.c

index 74f2157eba4e2d76d94a078ed084ac60ee2d61aa..67e8f531b7af413e518f0072f52df5a1ea8b043e 100644 (file)
@@ -241,6 +241,11 @@ static int msm_iommu_attach_dev(struct iommu_domain *domain, struct device *dev)
                goto fail;
        }
 
+       if (!list_empty(&ctx_drvdata->attached_elm)) {
+               ret = -EBUSY;
+               goto fail;
+       }
+
        list_for_each_entry(tmp_drvdata, &priv->list_attached, attached_elm)
                if (tmp_drvdata == ctx_drvdata) {
                        ret = -EBUSY;