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 "