diff options
| author | Youssef Youssef <yyoussef@codeaurora.org> | 2018-11-28 18:25:34 +0200 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-12-05 01:09:36 -0800 |
| commit | 010a0cd6a6ba382bcd4e36d3b6bd28184baf379b (patch) | |
| tree | 4a6d61c8090eb0d5a690a6f743e9eafca017e2c5 | |
| parent | 9e66b661ec6ac6836d4b2c98422038f9fd5d174d (diff) | |
scm_qcpe: validate hab_recv() return value for retry
habmm_socket_recv() can return -EINTR which indicate that
the operation must be restarted.
Change-Id: I0860a9593303c7bf1fea5e0349595c4b2fb085eb
Signed-off-by: Youssef Youssef <yyoussef@codeaurora.org>
| -rw-r--r-- | drivers/soc/qcom/scm_qcpe.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/soc/qcom/scm_qcpe.c b/drivers/soc/qcom/scm_qcpe.c index f9a593ceefc7..f8ad3503370b 100644 --- a/drivers/soc/qcom/scm_qcpe.c +++ b/drivers/soc/qcom/scm_qcpe.c @@ -473,11 +473,15 @@ static int scm_call_qcpe(u32 fn_id, struct scm_desc *desc) goto err_ret; } - size_bytes = sizeof(smc_params); + memset(&smc_params, 0x0, sizeof(smc_params)); - ret = habmm_socket_recv(handle, &smc_params, &size_bytes, 0, + do { + size_bytes = sizeof(smc_params); + ret = habmm_socket_recv(handle, &smc_params, &size_bytes, 0, HABMM_SOCKET_RECV_FLAGS_UNINTERRUPTIBLE); + } while (-EINTR == ret); + if (ret) { pr_err("habmm_socket_recv failed, ret= 0x%x\n", ret); goto err_ret; |
