summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>2002-07-04 00:35:48 +0000
committerjulian <julian@FreeBSD.org>2002-07-04 00:35:48 +0000
commit16096169a68feb8b29b2f608cc77f2cbfa8cba13 (patch)
treed2d592001be9b32e02ae267759f007c76b87a0a6 /sys
parent9344cebfef449689ad34c1a996f338be56e5ea12 (diff)
downloadFreeBSD-src-16096169a68feb8b29b2f608cc77f2cbfa8cba13.zip
FreeBSD-src-16096169a68feb8b29b2f608cc77f2cbfa8cba13.tar.gz
Don't free pages we never allocated..
My eyes openned by: Matt
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/pmap.c9
-rw-r--r--sys/i386/i386/pmap.c9
2 files changed, 4 insertions, 14 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index a88b58a..5a46bd3 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -1100,19 +1100,14 @@ pmap_dispose_thread(td)
ksobj = td->td_kstack_obj;
ks = td->td_kstack;
ptek = vtopte(ks);
-#ifdef KSTACK_GUARD
- ks -= PAGE_SIZE;
- for (i = 1; i < (KSTACK_PAGES + 1); i++) {
-#else
for (i = 0; i < KSTACK_PAGES; i++) {
-#endif
m = vm_page_lookup(ksobj, i);
if (m == NULL)
panic("pmap_dispose_thread: kstack already missing?");
vm_page_busy(m);
ptek[i] = 0;
#ifndef I386_CPU
- invlpg(ks + i * PAGE_SIZE);
+ invlpg(ks + (i * PAGE_SIZE));
#endif
vm_page_unwire(m, 0);
vm_page_free(m);
@@ -1125,7 +1120,7 @@ pmap_dispose_thread(td)
* address map.
*/
#ifdef KSTACK_GUARD
- kmem_free(kernel_map, ks, (KSTACK_PAGES + 1) * PAGE_SIZE);
+ kmem_free(kernel_map, ks - PAGE_SIZE, (KSTACK_PAGES + 1) * PAGE_SIZE);
#else
kmem_free(kernel_map, ks, KSTACK_PAGES * PAGE_SIZE);
#endif
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index a88b58a..5a46bd3 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -1100,19 +1100,14 @@ pmap_dispose_thread(td)
ksobj = td->td_kstack_obj;
ks = td->td_kstack;
ptek = vtopte(ks);
-#ifdef KSTACK_GUARD
- ks -= PAGE_SIZE;
- for (i = 1; i < (KSTACK_PAGES + 1); i++) {
-#else
for (i = 0; i < KSTACK_PAGES; i++) {
-#endif
m = vm_page_lookup(ksobj, i);
if (m == NULL)
panic("pmap_dispose_thread: kstack already missing?");
vm_page_busy(m);
ptek[i] = 0;
#ifndef I386_CPU
- invlpg(ks + i * PAGE_SIZE);
+ invlpg(ks + (i * PAGE_SIZE));
#endif
vm_page_unwire(m, 0);
vm_page_free(m);
@@ -1125,7 +1120,7 @@ pmap_dispose_thread(td)
* address map.
*/
#ifdef KSTACK_GUARD
- kmem_free(kernel_map, ks, (KSTACK_PAGES + 1) * PAGE_SIZE);
+ kmem_free(kernel_map, ks - PAGE_SIZE, (KSTACK_PAGES + 1) * PAGE_SIZE);
#else
kmem_free(kernel_map, ks, KSTACK_PAGES * PAGE_SIZE);
#endif
OpenPOWER on IntegriCloud