fix: free 'allocated_entry' to avoid memory leaks
Before memory_region = allocated_entry, when api_ffa_mem_send
return or goto out, allocated_entry shoule be freed, which has
been successfully alloced.
Change-Id: Ifebb5018c21650c31e2259516c9d59cb48899737
Signed-off-by: leisen <leisen1@huawei.com>
Signed-off-by: J-Alves <joao.alves@arm.com>
diff --git a/src/api.c b/src/api.c
index 23a2d52..e09bfac 100644
--- a/src/api.c
+++ b/src/api.c
@@ -3494,13 +3494,15 @@
dlog_verbose("Failed to allocate memory region copy.\n");
return ffa_error(FFA_NO_MEMORY);
}
+ memory_region = allocated_entry;
if (!memcpy_trapped(allocated_entry, MM_PPOOL_ENTRY_SIZE, from_msg,
fragment_length)) {
dlog_error(
"%s: Failed to copy FF-A memory region descriptor.\n",
__func__);
- return ffa_error(FFA_ABORTED);
+ ret = ffa_error(FFA_ABORTED);
+ goto out;
}
if (!ffa_memory_region_sanity_check(allocated_entry, ffa_version,
@@ -3515,8 +3517,6 @@
goto out;
}
- memory_region = allocated_entry;
-
if (fragment_length < sizeof(struct ffa_memory_region) +
memory_region->memory_access_desc_size) {
dlog_verbose(