Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ec8530c authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "qseecom: check if app is blocked when unloading app"

parents 03d97a47 63941632
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -207,6 +207,7 @@ struct qseecom_registered_app_list {
	char app_name[MAX_APP_NAME_SIZE];
	u32  app_arch;
	bool app_blocked;
	bool check_block;
	u32  blocked_on_listener_id;
};

@@ -2305,6 +2306,7 @@ static void __qseecom_reentrancy_check_if_this_app_blocked(
	sigset_t new_sigset, old_sigset;

	if (qseecom.qsee_reentrancy_support) {
		ptr_app->check_block = true;
		while (ptr_app->app_blocked || qseecom.app_block_ref_cnt > 1) {
			/* thread sleep until this app unblocked */
			sigfillset(&new_sigset);
@@ -2319,6 +2321,7 @@ static void __qseecom_reentrancy_check_if_this_app_blocked(
			mutex_lock(&app_access_lock);
			sigprocmask(SIG_SETMASK, &old_sigset, NULL);
		}
		ptr_app->check_block = false;
	}
}

@@ -2684,7 +2687,8 @@ static int qseecom_unload_app(struct qseecom_dev_handle *data,
				if (!strcmp((void *)ptr_app->app_name,
					(void *)data->client.app_name)) {
					found_app = true;
					if (ptr_app->app_blocked)
					if (ptr_app->app_blocked ||
							ptr_app->check_block)
						app_crash = false;
					if (app_crash || ptr_app->ref_cnt == 1)
						unload = true;