Merge "qseecom: resend continue blocked listener request"
This commit is contained in:
commit
12c0bc48ce
1 changed files with 17 additions and 5 deletions
|
@ -1940,7 +1940,7 @@ exit:
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __qseecom_process_blocked_on_listener_smcinvoke(
|
static int __qseecom_process_blocked_on_listener_smcinvoke(
|
||||||
struct qseecom_command_scm_resp *resp)
|
struct qseecom_command_scm_resp *resp, uint32_t app_id)
|
||||||
{
|
{
|
||||||
struct qseecom_registered_listener_list *list_ptr;
|
struct qseecom_registered_listener_list *list_ptr;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@ -1987,9 +1987,18 @@ static int __qseecom_process_blocked_on_listener_smcinvoke(
|
||||||
&ireq, sizeof(ireq),
|
&ireq, sizeof(ireq),
|
||||||
&continue_resp, sizeof(continue_resp));
|
&continue_resp, sizeof(continue_resp));
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_err("scm_call for continue blocked req for session %d failed, ret %d\n",
|
/* retry with legacy cmd */
|
||||||
session_id, ret);
|
qseecom.smcinvoke_support = false;
|
||||||
goto exit;
|
ireq.app_or_session_id = app_id;
|
||||||
|
ret = qseecom_scm_call(SCM_SVC_TZSCHEDULER, 1,
|
||||||
|
&ireq, sizeof(ireq),
|
||||||
|
&continue_resp, sizeof(continue_resp));
|
||||||
|
qseecom.smcinvoke_support = true;
|
||||||
|
if (ret) {
|
||||||
|
pr_err("cont block req for app %d or session %d fail\n",
|
||||||
|
app_id, session_id);
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
resp->result = QSEOS_RESULT_INCOMPLETE;
|
resp->result = QSEOS_RESULT_INCOMPLETE;
|
||||||
exit:
|
exit:
|
||||||
|
@ -2006,7 +2015,7 @@ static int __qseecom_process_reentrancy_blocked_on_listener(
|
||||||
resp, ptr_app, data);
|
resp, ptr_app, data);
|
||||||
else
|
else
|
||||||
return __qseecom_process_blocked_on_listener_smcinvoke(
|
return __qseecom_process_blocked_on_listener_smcinvoke(
|
||||||
resp);
|
resp, data->client.app_id);
|
||||||
}
|
}
|
||||||
static int __qseecom_reentrancy_process_incomplete_cmd(
|
static int __qseecom_reentrancy_process_incomplete_cmd(
|
||||||
struct qseecom_dev_handle *data,
|
struct qseecom_dev_handle *data,
|
||||||
|
@ -4786,6 +4795,9 @@ int qseecom_process_listener_from_smcinvoke(struct scm_desc *desc)
|
||||||
resp.resp_type = desc->ret[1]; /*incomplete:unused;blocked:session_id*/
|
resp.resp_type = desc->ret[1]; /*incomplete:unused;blocked:session_id*/
|
||||||
resp.data = desc->ret[2]; /*listener_id*/
|
resp.data = desc->ret[2]; /*listener_id*/
|
||||||
|
|
||||||
|
dummy_private_data.client.app_id = desc->ret[1];
|
||||||
|
dummy_app_entry.app_id = desc->ret[1];
|
||||||
|
|
||||||
mutex_lock(&app_access_lock);
|
mutex_lock(&app_access_lock);
|
||||||
if (qseecom.qsee_reentrancy_support)
|
if (qseecom.qsee_reentrancy_support)
|
||||||
ret = __qseecom_process_reentrancy(&resp, &dummy_app_entry,
|
ret = __qseecom_process_reentrancy(&resp, &dummy_app_entry,
|
||||||
|
|
Loading…
Add table
Reference in a new issue