summaryrefslogtreecommitdiff
path: root/arch/arm/plat-omap/dmm_user.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/plat-omap/dmm_user.c')
-rw-r--r--arch/arm/plat-omap/dmm_user.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/arm/plat-omap/dmm_user.c b/arch/arm/plat-omap/dmm_user.c
index 30f8bedee140..3afa28db3d2d 100644
--- a/arch/arm/plat-omap/dmm_user.c
+++ b/arch/arm/plat-omap/dmm_user.c
@@ -244,7 +244,15 @@ static int omap_dmm_release(struct inode *inode, struct file *filp)
}
obj = filp->private_data;
flush_signals(current);
- iommu_notify_event(obj->iovmm->iommu, IOMMU_CLOSE, NULL);
+
+ status = mutex_lock_interruptible(&obj->iovmm->dmm_map_lock);
+ if (status == 0) {
+ iommu_notify_event(obj->iovmm->iommu, IOMMU_CLOSE, NULL);
+ mutex_unlock(&obj->iovmm->dmm_map_lock);
+ } else {
+ pr_err("%s mutex_lock_interruptible returned 0x%x\n",
+ __func__, status);
+ }
user_remove_resources(obj);
iommu_put(obj->iovmm->iommu);
kfree(obj);