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

Commit 2fdbb30f authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "qseecom: fix a race condition when TA is blocked"

parents 12eb0c93 4ebe74ea
Loading
Loading
Loading
Loading
+24 −20
Original line number Diff line number Diff line
@@ -1895,6 +1895,7 @@ static int __qseecom_process_blocked_on_listener_legacy(
	ptr_app->blocked_on_listener_id = resp->data;

	/* sleep until listener is available */
	do {
		qseecom.app_block_ref_cnt++;
		ptr_app->app_blocked = true;
		mutex_unlock(&app_access_lock);
@@ -1909,6 +1910,7 @@ static int __qseecom_process_blocked_on_listener_legacy(
		mutex_lock(&app_access_lock);
		ptr_app->app_blocked = false;
		qseecom.app_block_ref_cnt--;
	}  while (list_ptr->listener_in_use);

	ptr_app->blocked_on_listener_id = 0;
	/* notify the blocked app that listener is available */
@@ -1959,6 +1961,7 @@ static int __qseecom_process_blocked_on_listener_smcinvoke(
	pr_debug("lsntr %d in_use = %d\n",
			resp->data, list_ptr->listener_in_use);
	/* sleep until listener is available */
	do {
		qseecom.app_block_ref_cnt++;
		mutex_unlock(&app_access_lock);
		if (wait_event_freezable(
@@ -1971,6 +1974,7 @@ static int __qseecom_process_blocked_on_listener_smcinvoke(
		}
		mutex_lock(&app_access_lock);
		qseecom.app_block_ref_cnt--;
	}  while (list_ptr->listener_in_use);

	/* notify TZ that listener is available */
	pr_warn("Lsntr %d is available, unblock session(%d) in TZ\n",