diff --git a/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c b/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c index ef54232c87dcdeef3d97eb21a73ed3bff7e9fbfb..ed7cb41266bd8a9e34b9083b005effe504bea44f 100644 --- a/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c +++ b/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c @@ -1911,7 +1911,8 @@ long msm_cpp_subdev_ioctl(struct v4l2_subdev *sd, break; } case VIDIOC_MSM_CPP_IOMMU_DETACH: { - if (cpp_dev->iommu_state == CPP_IOMMU_STATE_ATTACHED) { + if ((cpp_dev->iommu_state == CPP_IOMMU_STATE_ATTACHED) && + (cpp_dev->stream_cnt == 0)) { iommu_detach_device(cpp_dev->domain, cpp_dev->iommu_ctx); cpp_dev->iommu_state = CPP_IOMMU_STATE_DETACHED;