Loading drivers/misc/qseecom.c +6 −4 Original line number Original line Diff line number Diff line Loading @@ -2129,22 +2129,24 @@ static void __qseecom_reentrancy_check_if_no_app_blocked(uint32_t smc_id) } } /* /* * scm_call send command to a blocked TZ app will fail * scm_call of send data will fail if this TA is blocked or there are more * So, first check and then wait until this apps is unblocked * than one TA requesting listener services; So, first check to see if need * to wait. */ */ static void __qseecom_reentrancy_check_if_this_app_blocked( static void __qseecom_reentrancy_check_if_this_app_blocked( struct qseecom_registered_app_list *ptr_app) struct qseecom_registered_app_list *ptr_app) { { sigset_t new_sigset, old_sigset; sigset_t new_sigset, old_sigset; if (qseecom.qsee_reentrancy_support) { if (qseecom.qsee_reentrancy_support) { while (ptr_app->app_blocked) { while (ptr_app->app_blocked || qseecom.app_block_ref_cnt > 1) { /* thread sleep until this app unblocked */ /* thread sleep until this app unblocked */ sigfillset(&new_sigset); sigfillset(&new_sigset); sigprocmask(SIG_SETMASK, &new_sigset, &old_sigset); sigprocmask(SIG_SETMASK, &new_sigset, &old_sigset); mutex_unlock(&app_access_lock); mutex_unlock(&app_access_lock); do { do { if (!wait_event_freezable(qseecom.app_block_wq, if (!wait_event_freezable(qseecom.app_block_wq, !ptr_app->app_blocked)) (!ptr_app->app_blocked && qseecom.app_block_ref_cnt <= 1))) break; break; } while (1); } while (1); mutex_lock(&app_access_lock); mutex_lock(&app_access_lock); Loading Loading
drivers/misc/qseecom.c +6 −4 Original line number Original line Diff line number Diff line Loading @@ -2129,22 +2129,24 @@ static void __qseecom_reentrancy_check_if_no_app_blocked(uint32_t smc_id) } } /* /* * scm_call send command to a blocked TZ app will fail * scm_call of send data will fail if this TA is blocked or there are more * So, first check and then wait until this apps is unblocked * than one TA requesting listener services; So, first check to see if need * to wait. */ */ static void __qseecom_reentrancy_check_if_this_app_blocked( static void __qseecom_reentrancy_check_if_this_app_blocked( struct qseecom_registered_app_list *ptr_app) struct qseecom_registered_app_list *ptr_app) { { sigset_t new_sigset, old_sigset; sigset_t new_sigset, old_sigset; if (qseecom.qsee_reentrancy_support) { if (qseecom.qsee_reentrancy_support) { while (ptr_app->app_blocked) { while (ptr_app->app_blocked || qseecom.app_block_ref_cnt > 1) { /* thread sleep until this app unblocked */ /* thread sleep until this app unblocked */ sigfillset(&new_sigset); sigfillset(&new_sigset); sigprocmask(SIG_SETMASK, &new_sigset, &old_sigset); sigprocmask(SIG_SETMASK, &new_sigset, &old_sigset); mutex_unlock(&app_access_lock); mutex_unlock(&app_access_lock); do { do { if (!wait_event_freezable(qseecom.app_block_wq, if (!wait_event_freezable(qseecom.app_block_wq, !ptr_app->app_blocked)) (!ptr_app->app_blocked && qseecom.app_block_ref_cnt <= 1))) break; break; } while (1); } while (1); mutex_lock(&app_access_lock); mutex_lock(&app_access_lock); Loading