diff options
author | Robert Morris <[email protected]> | 2011-09-01 13:25:34 -0400 |
---|---|---|
committer | Robert Morris <[email protected]> | 2011-09-01 13:25:34 -0400 |
commit | 371ab7fa96f8e439f4008c973c37aa44ab6ed81e (patch) | |
tree | 1c43722ff54ff90494689ae4202ba2a2a8bd5dcc /vm.c | |
parent | 62e3b8a92c6f8840cec8a0db13b2bcad10192b4a (diff) | |
download | xv6-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.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -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; +} |