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

Commit 572600da 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 b2f3c8e7 d8cc005a
Loading
Loading
Loading
Loading
+24 −20
Original line number Diff line number Diff line
@@ -1900,6 +1900,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);
@@ -1914,6 +1915,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 */
@@ -1964,6 +1966,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(
@@ -1976,6 +1979,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",