Skip to content

Commit 00541f3

Browse files
fix(mem/mpu): remove extra memory being mapped
Initally, when mapping and copying, the destination region was being created with the same size of the original region, instead of the size of the data being copied Signed-off-by: Miguel Silva <[email protected]>
1 parent 610eb74 commit 00541f3

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
@@ -614,10 +614,16 @@ vaddr_t mem_map_cpy(struct addr_space* ass, struct addr_space* asd, vaddr_t vas,
614614
mpr = mpe->region;
615615
spin_unlock(&ass->lock);
616616

617-
if (mem_map(asd, &mpr, true)) {
618-
va_res = vas;
617+
if (num_pages * PAGE_SIZE > mpr.size) {
618+
va_res = INVALID_VA;
619619
} else {
620-
INFO("failed mem map on mem map cpy");
620+
mpr.size = num_pages * PAGE_SIZE;
621+
bool broadcast = mem_broadcast(asd, &mpr, true);
622+
if (mem_map(asd, &mpr, broadcast, false)) {
623+
va_res = vas;
624+
} else {
625+
INFO("failed mem map on mem map cpy");
626+
}
621627
}
622628
} else {
623629
INFO("failed mem map cpy");

0 commit comments

Comments
 (0)