qseecom: change check_blocked flag to an u32 value
Change app entry's check_blocked flag to u32 to indicate the
total number of clients being blocked on this app; then this
app can only be unloaded if this flag is 0.
Change-Id: I0370b25657b6dfdc40a738c784e601907c9b4dd4
Signed-off-by: Zhen Kong <zkong@codeaurora.org>
diff --git a/drivers/misc/qseecom.c b/drivers/misc/qseecom.c
index eab3b59..d0b5a0e 100644
--- a/drivers/misc/qseecom.c
+++ b/drivers/misc/qseecom.c
@@ -199,7 +199,7 @@
char app_name[MAX_APP_NAME_SIZE];
u32 app_arch;
bool app_blocked;
- bool check_block;
+ u32 check_block;
u32 blocked_on_listener_id;
};
@@ -2186,7 +2186,7 @@
sigset_t new_sigset, old_sigset;
if (qseecom.qsee_reentrancy_support) {
- ptr_app->check_block = true;
+ ptr_app->check_block++;
while (ptr_app->app_blocked || qseecom.app_block_ref_cnt > 1) {
/* thread sleep until this app unblocked */
sigfillset(&new_sigset);
@@ -2201,7 +2201,7 @@
mutex_lock(&app_access_lock);
sigprocmask(SIG_SETMASK, &old_sigset, NULL);
}
- ptr_app->check_block = false;
+ ptr_app->check_block--;
}
}
@@ -2470,6 +2470,7 @@
MAX_APP_NAME_SIZE);
entry->app_blocked = false;
entry->blocked_on_listener_id = 0;
+ entry->check_block = 0;
/* Deallocate the handle */
if (!IS_ERR_OR_NULL(ihandle))
@@ -4532,6 +4533,7 @@
entry->app_arch = app_arch;
entry->app_blocked = false;
entry->blocked_on_listener_id = 0;
+ entry->check_block = 0;
spin_lock_irqsave(&qseecom.registered_app_list_lock, flags);
list_add_tail(&entry->list, &qseecom.registered_app_list_head);
spin_unlock_irqrestore(&qseecom.registered_app_list_lock,
@@ -5446,6 +5448,7 @@
MAX_APP_NAME_SIZE);
entry->app_blocked = false;
entry->blocked_on_listener_id = 0;
+ entry->check_block = 0;
spin_lock_irqsave(&qseecom.registered_app_list_lock,
flags);
list_add_tail(&entry->list,