From 010a0cd6a6ba382bcd4e36d3b6bd28184baf379b Mon Sep 17 00:00:00 2001 From: Youssef Youssef Date: Wed, 28 Nov 2018 18:25:34 +0200 Subject: [PATCH] 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 --- drivers/soc/qcom/scm_qcpe.c | 8 ++++++-- 1 file 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;