summaryrefslogtreecommitdiff
path: root/kernel/vm.c
diff options
context:
space:
mode:
authorFrans Kaashoek <[email protected]>2019-07-22 15:38:08 -0400
committerFrans Kaashoek <[email protected]>2019-07-22 15:38:08 -0400
commitb2e9c8eea5d4f4edb43ae7be9e15986dbfce5b95 (patch)
tree22f78e4caee4b4481d30a1b83acd13b84841a06e /kernel/vm.c
parent38b430687cc248d7d2928e3b7cedf9d220b96013 (diff)
downloadxv6-labs-b2e9c8eea5d4f4edb43ae7be9e15986dbfce5b95.tar.gz
xv6-labs-b2e9c8eea5d4f4edb43ae7be9e15986dbfce5b95.tar.bz2
xv6-labs-b2e9c8eea5d4f4edb43ae7be9e15986dbfce5b95.zip
Clear U bit for second stack page so that it functions as a guard page
Diffstat (limited to 'kernel/vm.c')
-rw-r--r--kernel/vm.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/vm.c b/kernel/vm.c
index 96f2ffa..cbea684 100644
--- a/kernel/vm.c
+++ b/kernel/vm.c
@@ -436,3 +436,13 @@ kernelpa(uint64 va) {
pa = PTE2PA(*pte);
return pa+off;
}
+
+void
+clearpteu(pagetable_t pagetable, uint64 va) {
+ pte_t *pte;
+
+ pte = walk(pagetable, va, 0);
+ if(pte == 0)
+ panic("clearpteu");
+ *pte &= ~PTE_U;
+}