msm: iommu: Check if device is already attached
Stepan Moskovchenko [Sat, 13 Nov 2010 03:29:56 +0000 (19:29 -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 74f2157..67e8f53 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;