optee: fix mutex_unlock after mutex_lock
authorsean.huang <sean.huang@rock-chips.com>
Fri, 2 Jun 2017 01:46:14 +0000 (09:46 +0800)
committersean.huang <sean.huang@rock-chips.com>
Fri, 2 Jun 2017 07:59:16 +0000 (15:59 +0800)
Change-Id: Ic5a4b5b4691b11083e5fd9e327fc4be82d626bfb
Signed-off-by: sean.huang <sean.huang@rock-chips.com>
security/optee_linuxdriver/armtz/tee_tz_drv.c

index 4b5ec5a4eeedfa6d523b72ebfe1c6202ac8da8fd..58b33f42f11b484b18368debecccb481f82214cc 100644 (file)
@@ -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