Merge "qseecom: check return value of __qseecom_process_reentrancy"
This commit is contained in:
commit
151d9db74b
1 changed files with 26 additions and 14 deletions
|
@ -3122,6 +3122,7 @@ static int __qseecom_send_cmd(struct qseecom_dev_handle *data,
|
||||||
struct qseecom_send_cmd_req *req)
|
struct qseecom_send_cmd_req *req)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
int ret2 = 0;
|
||||||
u32 reqd_len_sb_in = 0;
|
u32 reqd_len_sb_in = 0;
|
||||||
struct qseecom_client_send_data_ireq send_data_req = {0};
|
struct qseecom_client_send_data_ireq send_data_req = {0};
|
||||||
struct qseecom_client_send_data_64bit_ireq send_data_req_64bit = {0};
|
struct qseecom_client_send_data_64bit_ireq send_data_req_64bit = {0};
|
||||||
|
@ -3220,32 +3221,38 @@ static int __qseecom_send_cmd(struct qseecom_dev_handle *data,
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_err("scm_call() failed with err: %d (app_id = %d)\n",
|
pr_err("scm_call() failed with err: %d (app_id = %d)\n",
|
||||||
ret, data->client.app_id);
|
ret, data->client.app_id);
|
||||||
return ret;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qseecom.qsee_reentrancy_support) {
|
if (qseecom.qsee_reentrancy_support) {
|
||||||
ret = __qseecom_process_reentrancy(&resp, ptr_app, data);
|
ret = __qseecom_process_reentrancy(&resp, ptr_app, data);
|
||||||
|
if (ret)
|
||||||
|
goto exit;
|
||||||
} else {
|
} else {
|
||||||
if (resp.result == QSEOS_RESULT_INCOMPLETE) {
|
if (resp.result == QSEOS_RESULT_INCOMPLETE) {
|
||||||
ret = __qseecom_process_incomplete_cmd(data, &resp);
|
ret = __qseecom_process_incomplete_cmd(data, &resp);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_err("process_incomplete_cmd failed err: %d\n",
|
pr_err("process_incomplete_cmd failed err: %d\n",
|
||||||
ret);
|
ret);
|
||||||
return ret;
|
goto exit;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (resp.result != QSEOS_RESULT_SUCCESS) {
|
if (resp.result != QSEOS_RESULT_SUCCESS) {
|
||||||
pr_err("Response result %d not supported\n",
|
pr_err("Response result %d not supported\n",
|
||||||
resp.result);
|
resp.result);
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
|
goto exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret = msm_ion_do_cache_op(qseecom.ion_clnt, data->client.ihandle,
|
exit:
|
||||||
|
ret2 = msm_ion_do_cache_op(qseecom.ion_clnt, data->client.ihandle,
|
||||||
data->client.sb_virt, data->client.sb_length,
|
data->client.sb_virt, data->client.sb_length,
|
||||||
ION_IOC_INV_CACHES);
|
ION_IOC_INV_CACHES);
|
||||||
if (ret)
|
if (ret2) {
|
||||||
pr_err("cache operation failed %d\n", ret);
|
pr_err("cache operation failed %d\n", ret2);
|
||||||
|
return ret2;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6566,6 +6573,7 @@ static int __qseecom_qteec_issue_cmd(struct qseecom_dev_handle *data,
|
||||||
bool found_app = false;
|
bool found_app = false;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
int ret2 = 0;
|
||||||
uint32_t reqd_len_sb_in = 0;
|
uint32_t reqd_len_sb_in = 0;
|
||||||
void *cmd_buf = NULL;
|
void *cmd_buf = NULL;
|
||||||
size_t cmd_len;
|
size_t cmd_len;
|
||||||
|
@ -6675,43 +6683,47 @@ static int __qseecom_qteec_issue_cmd(struct qseecom_dev_handle *data,
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_err("scm_call() failed with err: %d (app_id = %d)\n",
|
pr_err("scm_call() failed with err: %d (app_id = %d)\n",
|
||||||
ret, data->client.app_id);
|
ret, data->client.app_id);
|
||||||
return ret;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qseecom.qsee_reentrancy_support) {
|
if (qseecom.qsee_reentrancy_support) {
|
||||||
ret = __qseecom_process_reentrancy(&resp, ptr_app, data);
|
ret = __qseecom_process_reentrancy(&resp, ptr_app, data);
|
||||||
|
if (ret)
|
||||||
|
goto exit;
|
||||||
} else {
|
} else {
|
||||||
if (resp.result == QSEOS_RESULT_INCOMPLETE) {
|
if (resp.result == QSEOS_RESULT_INCOMPLETE) {
|
||||||
ret = __qseecom_process_incomplete_cmd(data, &resp);
|
ret = __qseecom_process_incomplete_cmd(data, &resp);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_err("process_incomplete_cmd failed err: %d\n",
|
pr_err("process_incomplete_cmd failed err: %d\n",
|
||||||
ret);
|
ret);
|
||||||
return ret;
|
goto exit;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (resp.result != QSEOS_RESULT_SUCCESS) {
|
if (resp.result != QSEOS_RESULT_SUCCESS) {
|
||||||
pr_err("Response result %d not supported\n",
|
pr_err("Response result %d not supported\n",
|
||||||
resp.result);
|
resp.result);
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
|
goto exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret = msm_ion_do_cache_op(qseecom.ion_clnt, data->client.ihandle,
|
exit:
|
||||||
|
ret2 = msm_ion_do_cache_op(qseecom.ion_clnt, data->client.ihandle,
|
||||||
data->client.sb_virt, data->client.sb_length,
|
data->client.sb_virt, data->client.sb_length,
|
||||||
ION_IOC_INV_CACHES);
|
ION_IOC_INV_CACHES);
|
||||||
if (ret) {
|
if (ret2) {
|
||||||
pr_err("cache operation failed %d\n", ret);
|
pr_err("cache operation failed %d\n", ret);
|
||||||
return ret;
|
return ret2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((cmd_id == QSEOS_TEE_OPEN_SESSION) ||
|
if ((cmd_id == QSEOS_TEE_OPEN_SESSION) ||
|
||||||
(cmd_id == QSEOS_TEE_REQUEST_CANCELLATION)) {
|
(cmd_id == QSEOS_TEE_REQUEST_CANCELLATION)) {
|
||||||
ret = __qseecom_update_qteec_req_buf(
|
ret2 = __qseecom_update_qteec_req_buf(
|
||||||
(struct qseecom_qteec_modfd_req *)req, data, true);
|
(struct qseecom_qteec_modfd_req *)req, data, true);
|
||||||
if (ret)
|
if (ret2)
|
||||||
return ret;
|
return ret2;
|
||||||
}
|
}
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qseecom_qteec_open_session(struct qseecom_dev_handle *data,
|
static int qseecom_qteec_open_session(struct qseecom_dev_handle *data,
|
||||||
|
|
Loading…
Add table
Reference in a new issue