From: Ben Pfaff Date: Thu, 2 Sep 2004 23:28:07 +0000 (+0000) Subject: Destroy PT pages in addrspace_destroy(). X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc83e159fc3dd0301a967aef2b84f1460aa3ef08;p=pintos-anon Destroy PT pages in addrspace_destroy(). --- diff --git a/src/threads/paging.c b/src/threads/paging.c index 2ae78c3..a86969b 100644 --- a/src/threads/paging.c +++ b/src/threads/paging.c @@ -85,10 +85,26 @@ void pagedir_destroy (uint32_t *pd) { void *kpage, *upage; + unsigned pde_idx; + /* Destroy user pages. */ for (kpage = pagedir_first (pd, &upage); kpage != NULL; kpage = pagedir_next (pd, &upage)) palloc_free (kpage); + + /* Destroy page table pages. */ + for (pde_idx = 0; pde_idx < pd_no (PHYS_BASE); pde_idx++) + { + uint32_t pde = pd[pde_idx]; + + if (pde != 0) + { + uint32_t *pt = pde_get_pt (pde); + palloc_free (pt); + } + } + + /* Destroy page directory. */ palloc_free (pd); }