From: SooChan Lim Date: Thu, 24 Jun 2021 04:21:43 +0000 (+0900) Subject: tbm_bufmgr: lock the gLock before locking tbm_bufmgr_mutex X-Git-Tag: submit/tizen/20210624.054931~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=476d7e52448ec3248efecdac34adb8510ad918b9;p=platform%2Fcore%2Fuifw%2Flibtbm.git tbm_bufmgr: lock the gLock before locking tbm_bufmgr_mutex The order of locking mutex makes deadlock. So this patch will start to fix. Change-Id: I47a537f41ad19cac3bb1a31fc75a88bae5cda21d --- diff --git a/src/tbm_bufmgr.c b/src/tbm_bufmgr.c index 9ad49b4..f7ca118 100644 --- a/src/tbm_bufmgr.c +++ b/src/tbm_bufmgr.c @@ -832,21 +832,28 @@ tbm_bufmgr_server_init(void) int tbm_bufmgr_set_bo_lock_type(tbm_bufmgr bufmgr, tbm_bufmgr_bo_lock_type bo_lock_type) { + pthread_mutex_lock(&gLock); _tbm_bufmgr_mutex_lock(); + _tbm_set_last_result(TBM_ERROR_NONE); - TBM_BUFMGR_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(gBufMgr), 0); - TBM_BUFMGR_RETURN_VAL_IF_FAIL(bufmgr == gBufMgr, 0); + TBM_GOTO_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(gBufMgr), failed); + TBM_GOTO_VAL_IF_FAIL(bufmgr == gBufMgr, failed); - pthread_mutex_lock(&gLock); gBufMgr->bo_lock_type = bo_lock_type; - pthread_mutex_unlock(&gLock); TBM_INFO("The bo_lock_type of the bo is %d\n", bo_lock_type); _tbm_bufmgr_mutex_unlock(); + pthread_mutex_unlock(&gLock); return 1; + +failed: + _tbm_bufmgr_mutex_unlock(); + pthread_mutex_unlock(&gLock); + + return 0; }