summaryrefslogtreecommitdiff
path: root/security
diff options
context:
space:
mode:
authorsean.huang <sean.huang@rock-chips.com>2017-06-02 09:46:14 +0800
committersean.huang <sean.huang@rock-chips.com>2017-06-02 15:59:16 +0800
commitf54c22b8599b46a5a9b7b0024eb29c209b8fd426 (patch)
treecefbb68bb6999ad8800351a754c1249755d92ed4 /security
parentd3a6dbe68206903e77867487f7f349cd7dea1306 (diff)
optee: fix mutex_unlock after mutex_lock
Change-Id: Ic5a4b5b4691b11083e5fd9e327fc4be82d626bfb Signed-off-by: sean.huang <sean.huang@rock-chips.com>
Diffstat (limited to 'security')
-rw-r--r--security/optee_linuxdriver/armtz/tee_tz_drv.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/security/optee_linuxdriver/armtz/tee_tz_drv.c b/security/optee_linuxdriver/armtz/tee_tz_drv.c
index 4b5ec5a4eeed..58b33f42f11b 100644
--- a/security/optee_linuxdriver/armtz/tee_tz_drv.c
+++ b/security/optee_linuxdriver/armtz/tee_tz_drv.c
@@ -1100,8 +1100,10 @@ out:
param.a1 = TEESMC_ST_L2CC_MUTEX_DISABLE;
#ifdef SWITCH_CPU0_DEBUG
ret = tee_smc_call_switchcpu0(&param);
- if (ret)
- goto out;
+ if (ret) {
+ mutex_unlock(&ptee->mutex);
+ return ret;
+ }
#else
tee_smc_call(&param);
#endif
@@ -1132,8 +1134,10 @@ static int configure_shm(struct tee_tz *ptee)
param.a0 = TEESMC32_ST_FASTCALL_GET_SHM_CONFIG;
#ifdef SWITCH_CPU0_DEBUG
ret = tee_smc_call_switchcpu0(&param);
- if (ret)
+ if (ret) {
+ mutex_unlock(&ptee->mutex);
goto out;
+ }
#else
tee_smc_call(&param);
#endif