From dc83e159fc3dd0301a967aef2b84f1460aa3ef08 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Thu, 2 Sep 2004 23:28:07 +0000 Subject: [PATCH] Destroy PT pages in addrspace_destroy(). --- src/threads/paging.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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); } -- 2.30.2