From ffe444926e4685301c35b17b254ef2067560f401 Mon Sep 17 00:00:00 2001 From: Cody Cutler Date: Mon, 26 Sep 2016 12:21:01 -0400 Subject: [PATCH] fix possible memory leak in deallocuvm when a zero PDE is encountered while searching for present PTEs to free, resume searching at first entry of the next page table instead of the current entry of the next page table. --- vm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vm.c b/vm.c index d9aaa7e..764512c 100644 --- a/vm.c +++ b/vm.c @@ -266,7 +266,7 @@ deallocuvm(pde_t *pgdir, uint oldsz, uint newsz) for(; a < oldsz; a += PGSIZE){ pte = walkpgdir(pgdir, (char*)a, 0); if(!pte) - a += (NPTENTRIES - 1) * PGSIZE; + a = PGADDR(PDX(a) + 1, 0, 0) - PGSIZE; else if((*pte & PTE_P) != 0){ pa = PTE_ADDR(*pte); if(pa == 0)