提交 78b3e8c8 创建 作者: Nickolai Zeldovich's avatar Nickolai Zeldovich

fix validate test

上级 41f6fab5
......@@ -1403,10 +1403,10 @@ validatetest(void)
uptr lo, hi, p;
fprintf(stdout, "validate test\n");
// Do 16 pages below the bottom of userspace and 16 pages above,
// Do 16 pages below KBASE and 16 pages above,
// which should be code pages and read-only
lo = (1024*1024) - 16*4096;
hi = (1024*1024) + 16*4096;
lo = 0xFFFFFF0000000000ull - 16*4096;
hi = 0xFFFFFF0000000000ull + 16*4096;
for(p = lo; p <= hi; p += 4096){
if((pid = fork(0)) == 0){
......
......@@ -120,7 +120,7 @@ trap(struct trapframe *tf)
if(tf->trapno == T_PGFLT){
uptr addr = rcr2();
sti();
if(addr < USERTOP && pagefault(myproc()->vmap, addr, tf->err) >= 0){
if(pagefault(myproc()->vmap, addr, tf->err) >= 0){
#if MTRACE
mtstop(myproc());
if (myproc()->mtrace_stacks.curr >= 0)
......
......@@ -384,6 +384,9 @@ vmap::pagefault_wcow(vma *m)
int
vmap::pagefault(uptr va, u32 err)
{
if (va >= USERTOP)
return -1;
atomic<pme_t> *pte = walkpgdir(pml4, va, 1);
retry:
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论