fix(el3-spmc): correctly account for emad_offset
Use the address of emad 0 instead of the size of the MRD.
Change-Id: I31ec0001b4474e78caa9dfb468f63122a3708781
Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
diff --git a/services/std_svc/spm/el3_spmc/spmc_shared_mem.c b/services/std_svc/spm/el3_spmc/spmc_shared_mem.c
index b5cb734..1f8e7ff 100644
--- a/services/std_svc/spm/el3_spmc/spmc_shared_mem.c
+++ b/services/std_svc/spm/el3_spmc/spmc_shared_mem.c
@@ -801,7 +801,6 @@
size_t expected_size;
size_t total_page_count;
size_t emad_size;
- size_t desc_size;
size_t header_emad_size;
uint32_t offset;
struct ffa_comp_mrd *comp;
@@ -838,13 +837,7 @@
continue; /* Remainder only executed on first iteration. */
}
- if (ffa_version == MAKE_FFA_VERSION(1, 0)) {
- desc_size = sizeof(struct ffa_mtd_v1_0);
- } else {
- desc_size = sizeof(struct ffa_mtd);
- }
-
- header_emad_size = desc_size +
+ header_emad_size = (size_t)((uint8_t *)emad - (uint8_t *)&obj->desc) +
(obj->desc.emad_count * emad_size);
if (offset < header_emad_size) {