Skip to content

Commit 37ae45a

Browse files
miguelafsilva5josecm
authored andcommitted
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 23d0cee commit 37ae45a

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)