diff options
Diffstat (limited to 'arch/arm/plat-omap/dmm_user.c')
-rw-r--r-- | arch/arm/plat-omap/dmm_user.c | 10 |
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); |