Skip to content

Commit 0dd2a8e

Browse files
fix(extra_mem): Remove extra memory that was being mapped
Signed-off-by: Miguel Silva <[email protected]>
1 parent 2b3ba53 commit 0dd2a8e

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/core/mpu/mem.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -590,10 +590,16 @@ vaddr_t mem_map_cpy(struct addr_space* ass, struct addr_space* asd, vaddr_t vas,
590590
mpr = mpe->region;
591591
spin_unlock(&ass->lock);
592592

593-
if (mem_map(asd, &mpr, true, false)) {
594-
va_res = vas;
593+
if (num_pages * PAGE_SIZE > mpr.size) {
594+
va_res = INVALID_VA;
595595
} else {
596-
INFO("failed mem map on mem map cpy");
596+
mpr.size = num_pages * PAGE_SIZE;
597+
bool broadcast = mem_broadcast(asd, &mpr, true);
598+
if (mem_map(asd, &mpr, broadcast, false)) {
599+
va_res = vas;
600+
} else {
601+
INFO("failed mem map on mem map cpy");
602+
}
597603
}
598604
} else {
599605
INFO("failed mem map cpy");

0 commit comments

Comments
 (0)