From 66a3acb2faba75b8f362328973ce6f62ff27bb94 Mon Sep 17 00:00:00 2001 From: Hubert Badocha Date: Thu, 22 Aug 2024 13:34:42 +0200 Subject: [PATCH] Revert for --- vm/map.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/vm/map.c b/vm/map.c index 7495b352..24f9aa3c 100644 --- a/vm/map.c +++ b/vm/map.c @@ -373,6 +373,7 @@ void *vm_mapFind(vm_map_t *map, void *vaddr, size_t size, u8 flags, u8 prot) int _vm_munmap(vm_map_t *map, void *vaddr, size_t size) { ptr_t pvaddr; + long offs; map_entry_t *e, *s; map_entry_t t; process_t *proc = proc_current()->process; @@ -470,10 +471,16 @@ int _vm_munmap(vm_map_t *map, void *vaddr, size_t size) /* Perform amap and pmap changes only when we are sure we have enough space to perform corresponding map changes. */ /* Note: what if NEEDS_COPY? */ - amap_putanons(e->amap, e->aoffs + overlapEOffset, overlapSize); + // amap_putanons(e->amap, e->aoffs + overlapEOffset, overlapSize); - for (pvaddr = overlapStart; pvaddr < overlapEnd; pvaddr += SIZE_PAGE) { - pmap_remove(&map->pmap, (void *)pvaddr); + // for (pvaddr = overlapStart; pvaddr < overlapEnd; pvaddr += SIZE_PAGE) { + // pmap_remove(&map->pmap, (void *)pvaddr); + // } + + amap_putanons(e->amap, (e->aoffs + overlapStart) - (ptr_t)e->vaddr, overlapSize); + + for (offs = (overlapStart - (ptr_t)e->vaddr); offs < (overlapEnd - (ptr_t)e->vaddr); offs += SIZE_PAGE) { + pmap_remove(&map->pmap, e->vaddr + offs); } if (putEntry != 0) {