From dbe59ab3f8eefedf784791f9ab9cdb4938cfa3f7 Mon Sep 17 00:00:00 2001 From: "Isaac J. Manjarres" Date: Tue, 12 May 2020 12:18:26 -0700 Subject: [PATCH] soc: qcom: mem-buf: Do not free memory if hyp_assign() fails The state of memory--with respect to access control--is unknown when a hyp_assign() call fails because the underlying SCM call fails. In these cases, it is not safe to access the memory, so we should not free it back to the system. Change-Id: I992225cdd5f26fbba60d2966d051d026326cd593 Signed-off-by: Isaac J. Manjarres --- drivers/soc/qcom/mem-buf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/soc/qcom/mem-buf.c b/drivers/soc/qcom/mem-buf.c index a68647bd240dc..1d2d74b75a883 100644 --- a/drivers/soc/qcom/mem-buf.c +++ b/drivers/soc/qcom/mem-buf.c @@ -619,7 +619,8 @@ err_retrieve_hdl: if (!xfer_mem->secure_alloc && (mem_buf_unassign_mem(xfer_mem) < 0)) return ERR_PTR(ret); err_assign_mem: - mem_buf_rmt_free_mem(xfer_mem); + if (ret != -EADDRNOTAVAIL) + mem_buf_rmt_free_mem(xfer_mem); err_rmt_alloc: mem_buf_free_xfer_mem(xfer_mem); return ERR_PTR(ret);