From c3b00cbb3912ea1e7ed1528fca0998d2db52e9bc Mon Sep 17 00:00:00 2001 From: Dinesh K Garg Date: Tue, 15 Sep 2020 10:58:55 -0700 Subject: [PATCH] smcinvoke: populate result from correct returned variable SCM driver upstream effort has broken how results from trusted side used to be handled. Since, all 4 return variables (return, res[0-2] are not available, use correct available variable to fill up result. Change-Id: Iaf930bb1b70a91b34a14490ab1c2c2794c7c0a48 Signed-off-by: Dinesh K Garg --- drivers/soc/qcom/smcinvoke.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/soc/qcom/smcinvoke.c b/drivers/soc/qcom/smcinvoke.c index d3d757ec67bc..3cf1246a5b00 100644 --- a/drivers/soc/qcom/smcinvoke.c +++ b/drivers/soc/qcom/smcinvoke.c @@ -1239,6 +1239,12 @@ static int prepare_send_scm_msg(const uint8_t *in_buf, phys_addr_t in_paddr, response_type == QSEOS_RESULT_BLOCKED_ON_LISTENER) { ret = qseecom_process_listener_from_smcinvoke( &req->result, &response_type, &data); + /* + * new scm APIs do not provide complete response i.e. res[0-2], + * we loose some values returned from QSEECom APIs. so we need to + * populate result from response type i.e. res[1] + */ + req->result = response_type; if (!req->result) { ret = marshal_out_invoke_req(in_buf, in_buf_len, req, args_buf);