summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2019-10-27 13:36:46 -0400
committerRobert Morris <[email protected]>2019-10-27 13:36:46 -0400
commite7ffb74ad1e4c4e8a4a5e62968f52499dc0c7079 (patch)
tree0e1642db92cca1d0c5852a8a5f8729d175222d24
parentd9160fb4b98e3ce04d3928c1fbd2ec26b3cc746a (diff)
downloadxv6-labs-e7ffb74ad1e4c4e8a4a5e62968f52499dc0c7079.tar.gz
xv6-labs-e7ffb74ad1e4c4e8a4a5e62968f52499dc0c7079.tar.bz2
xv6-labs-e7ffb74ad1e4c4e8a4a5e62968f52499dc0c7079.zip
fix a potential memory leak
-rw-r--r--kernel/proc.c3
-rw-r--r--kernel/vm.c3
2 files changed, 3 insertions, 3 deletions
diff --git a/kernel/proc.c b/kernel/proc.c
index ef2ad68..0cb5afe 100644
--- a/kernel/proc.c
+++ b/kernel/proc.c
@@ -176,8 +176,7 @@ proc_freepagetable(pagetable_t pagetable, uint64 sz)
{
uvmunmap(pagetable, TRAMPOLINE, PGSIZE, 0);
uvmunmap(pagetable, TRAPFRAME, PGSIZE, 0);
- if(sz > 0)
- uvmfree(pagetable, sz);
+ uvmfree(pagetable, sz);
}
// a user program that calls exec("/init")
diff --git a/kernel/vm.c b/kernel/vm.c
index c5da0c1..3004bb3 100644
--- a/kernel/vm.c
+++ b/kernel/vm.c
@@ -301,7 +301,8 @@ freewalk(pagetable_t pagetable)
void
uvmfree(pagetable_t pagetable, uint64 sz)
{
- uvmunmap(pagetable, 0, sz, 1);
+ if(sz > 0)
+ uvmunmap(pagetable, 0, sz, 1);
freewalk(pagetable);
}