msm_fb: display: exit properly when rotator max session reached
When rotator session reach maximum, it should exit without calling
put_img since no get_img had been called.
CRs-fixed: 466462
Change-Id: I951570227ebd81da6dad19c1b897cde84f8d0451
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
diff --git a/drivers/char/msm_rotator.c b/drivers/char/msm_rotator.c
index c80a58b..448d5d2 100644
--- a/drivers/char/msm_rotator.c
+++ b/drivers/char/msm_rotator.c
@@ -1104,7 +1104,8 @@
pr_err("%s() : Attempt to use invalid session_id %d\n",
__func__, s);
rc = -EINVAL;
- goto do_rotate_unlock_mutex;
+ mutex_unlock(&msm_rotator_dev->rotator_lock);
+ return rc;
}
img_info = &(msm_rotator_dev->rot_session[s]->img_info);
@@ -1112,7 +1113,8 @@
dev_dbg(msm_rotator_dev->device,
"%s() : Session_id %d not enabled\n", __func__, s);
rc = -EINVAL;
- goto do_rotate_unlock_mutex;
+ mutex_unlock(&msm_rotator_dev->rotator_lock);
+ return rc;
}
if (msm_rotator_get_plane_sizes(img_info->src.format,
@@ -1121,7 +1123,8 @@
&src_planes)) {
pr_err("%s: invalid src format\n", __func__);
rc = -EINVAL;
- goto do_rotate_unlock_mutex;
+ mutex_unlock(&msm_rotator_dev->rotator_lock);
+ return rc;
}
if (msm_rotator_get_plane_sizes(img_info->dst.format,
img_info->dst.width,
@@ -1129,7 +1132,8 @@
&dst_planes)) {
pr_err("%s: invalid dst format\n", __func__);
rc = -EINVAL;
- goto do_rotate_unlock_mutex;
+ mutex_unlock(&msm_rotator_dev->rotator_lock);
+ return rc;
}
rc = get_img(&info.src, ROTATOR_SRC_DOMAIN, (unsigned long *)&in_paddr,