diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/proc.c | 4 | ||||
-rw-r--r-- | kernel/vm.c | 5 |
2 files changed, 5 insertions, 4 deletions
diff --git a/kernel/proc.c b/kernel/proc.c index 786e5c3..0d91a59 100644 --- a/kernel/proc.c +++ b/kernel/proc.c @@ -232,9 +232,7 @@ growproc(int n) return -1; } } else if(n < 0){ - if((sz = uvmdealloc(p->pagetable, sz, sz + n)) == 0) { - return -1; - } + sz = uvmdealloc(p->pagetable, sz, sz + n); } p->sz = sz; return 0; diff --git a/kernel/vm.c b/kernel/vm.c index 51165b7..8036be7 100644 --- a/kernel/vm.c +++ b/kernel/vm.c @@ -268,7 +268,10 @@ uvmdealloc(pagetable_t pagetable, uint64 oldsz, uint64 newsz) { if(newsz >= oldsz) return oldsz; - uvmunmap(pagetable, newsz, oldsz - newsz, 1); + + uint64 newup = PGROUNDUP(newsz); + uvmunmap(pagetable, newup, oldsz - newup, 1); + return newsz; } |