From 4de161f973aa06d5f08de1063d3fc9c22e4547e7 Mon Sep 17 00:00:00 2001 From: Robert Morris Date: Fri, 20 Sep 2019 11:35:27 -0400 Subject: don't panic if a program frees all its memory with sbrk(). if a program sbrk()'s to a non-page-boundary, don't free that page. corresponding usertests. --- kernel/vm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'kernel/vm.c') 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; } -- cgit v1.2.3