fix(memory share): set size of access descriptor
Set size of the memory access descriptor in the handling
of the hypervisor retrieve request.
Signed-off-by: J-Alves <joao.alves@arm.com>
Change-Id: I19ae734d3019f42f26f4bb47055944a30059138e
diff --git a/src/ffa_memory.c b/src/ffa_memory.c
index 4922bd7..7fb7d61 100644
--- a/src/ffa_memory.c
+++ b/src/ffa_memory.c
@@ -2945,7 +2945,7 @@
uint32_t fragment_length;
ffa_id_t receiver_id = to_locked.vm->id;
ffa_memory_attributes_t attributes;
- uint64_t memory_access_desc_size = sizeof(struct ffa_memory_access);
+ uint64_t memory_access_desc_size;
struct ffa_memory_region *memory_region;
ffa_memory_handle_t handle = retrieve_request->handle;
@@ -2955,6 +2955,18 @@
memory_region = share_state->memory_region;
+ switch (to_locked.vm->ffa_version) {
+ case MAKE_FFA_VERSION(1, 2):
+ memory_access_desc_size = sizeof(struct ffa_memory_access);
+ break;
+ case MAKE_FFA_VERSION(1, 0):
+ case MAKE_FFA_VERSION(1, 1):
+ memory_access_desc_size = sizeof(struct ffa_memory_access_v1_0);
+ break;
+ default:
+ panic("version not supported: %x\n", to_locked.vm->ffa_version);
+ }
+
if (share_state->hypervisor_fragment_count != 0U) {
dlog_verbose(
"Memory with handle %#x already retrieved by "