summaryrefslogtreecommitdiff
path: root/vm.c
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2011-09-01 13:25:34 -0400
committerRobert Morris <[email protected]>2011-09-01 13:25:34 -0400
commit371ab7fa96f8e439f4008c973c37aa44ab6ed81e (patch)
tree1c43722ff54ff90494689ae4202ba2a2a8bd5dcc /vm.c
parent62e3b8a92c6f8840cec8a0db13b2bcad10192b4a (diff)
downloadxv6-labs-371ab7fa96f8e439f4008c973c37aa44ab6ed81e.tar.gz
xv6-labs-371ab7fa96f8e439f4008c973c37aa44ab6ed81e.tar.bz2
xv6-labs-371ab7fa96f8e439f4008c973c37aa44ab6ed81e.zip
inaccessible page under the user stack page, to help exec deal w/ too-large args
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/vm.c b/vm.c
index 247fede..c717baf 100644
--- a/vm.c
+++ b/vm.c
@@ -363,3 +363,16 @@ copyout(pde_t *pgdir, uint va, void *p, uint len)
}
return 0;
}
+
+// Clear PTE_U on a page. Used to create an inaccessible
+// page beneath the user stack.
+void
+clear_pte_u(pde_t *pgdir, char *uva)
+{
+ pte_t *pte;
+
+ pte = walkpgdir(pgdir, uva, 0);
+ if(pte == 0)
+ panic("clear_pte_u");
+ *pte &= ~PTE_U;
+}