fix: remove stack fault checks for page faults outside user non-present addresses

This commit is contained in:
Themis Demetriades
2024-12-02 21:07:17 +00:00
parent fbcd3c9f19
commit df7d847978
2 changed files with 2 additions and 7 deletions

View File

@@ -149,14 +149,10 @@ page_fault (struct intr_frame *f)
#ifdef VM
if (user && not_present)
{
if (handle_stack_fault (fault_addr, f->esp))
return;
if (handle_stack_fault (fault_addr, f->esp)) return;
}
else
{
if (handle_stack_fault (fault_addr, thread_current ()->curr_esp))
return;
f->eip = (void *)f->eax;
f->eax = 0xffffffff;
return;

View File

@@ -26,8 +26,7 @@ handle_stack_fault (const void *ptr, const void *esp)
static bool
is_stack_fault (const void *addr, const void *esp)
{
return (is_user_vaddr (addr) &&
(uint32_t*)addr >= ((uint32_t*)esp - MAX_STACK_ACCESS_DIST) &&
return ((uint32_t*)addr >= ((uint32_t*)esp - MAX_STACK_ACCESS_DIST) &&
((PHYS_BASE - pg_round_down (addr)) <= MAX_STACK_SIZE));
}