summaryrefslogtreecommitdiff
path: root/services/std_svc
diff options
context:
space:
mode:
authorMarc Bonnici <marc.bonnici@arm.com>2022-10-18 13:50:04 +0100
committerJoanna Farley <joanna.farley@arm.com>2022-11-07 14:39:26 +0100
commit0dc35186669ddaedb3a932e103c3976bc3bf75d6 (patch)
treea3660d70ed6eb98281fc06754cda61519a761ddd /services/std_svc
parentc4adbe6e67617bb2d4f0ffb1c1daa3395f7ac227 (diff)
downloadarm-trusted-firmware-0dc35186669ddaedb3a932e103c3976bc3bf75d6.tar.gz
fix(el3-spmc): fix detection of overlapping memory regions
The current logic does not cover all scenarios of overlapping memory regions. Update the implementation to verify non-overlapping regions instead. Reported by Matt Oh, Google Android Red Team. Reported-by: mattoh@google.com Signed-off-by: Marc Bonnici <marc.bonnici@arm.com> Change-Id: I16c53d081e4455bc0e28399d28a1b27b1a9eb49c
Diffstat (limited to 'services/std_svc')
-rw-r--r--services/std_svc/spm/el3_spmc/spmc_shared_mem.c7
1 files changed, 3 insertions, 4 deletions
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 f7911b9b3..6f6d273d6 100644
--- a/services/std_svc/spm/el3_spmc/spmc_shared_mem.c
+++ b/services/std_svc/spm/el3_spmc/spmc_shared_mem.c
@@ -330,10 +330,9 @@ overlapping_memory_regions(struct ffa_comp_mrd *region1,
PAGE_SIZE_4KB;
region2_end = region2_start + region2_size;
- if ((region1_start >= region2_start &&
- region1_start < region2_end) ||
- (region1_end > region2_start
- && region1_end < region2_end)) {
+ /* Check if regions are not overlapping. */
+ if (!((region2_end <= region1_start) ||
+ (region1_end <= region2_start))) {
WARN("Overlapping mem regions 0x%lx-0x%lx & 0x%lx-0x%lx\n",
region1_start, region1_end,
region2_start, region2_end);