x86: make guard pages ro instead of non-present
Has the same effect of catching stack overflows, but makes debugging with GDB simpler since we won't get errors when inspecting such regions. Making these areas non-present was more than we needed, read-only is sufficient. Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
parent
7fae2bbc18
commit
76310f6896
2 changed files with 7 additions and 11 deletions
|
@ -73,14 +73,14 @@ void z_new_thread(struct k_thread *thread, k_thread_stack_t *stack,
|
|||
* page */
|
||||
z_x86_mmu_set_flags(&z_x86_kernel_pdpt,
|
||||
(void *)(stack_buf - MMU_PAGE_SIZE),
|
||||
MMU_PAGE_SIZE, MMU_ENTRY_NOT_PRESENT,
|
||||
MMU_PTE_P_MASK);
|
||||
MMU_PAGE_SIZE, MMU_ENTRY_READ,
|
||||
MMU_PTE_RW_MASK);
|
||||
}
|
||||
#endif /* CONFIG_X86_USERSPACE */
|
||||
|
||||
#if CONFIG_X86_STACK_PROTECTION
|
||||
z_x86_mmu_set_flags(&z_x86_kernel_pdpt, stack, MMU_PAGE_SIZE,
|
||||
MMU_ENTRY_NOT_PRESENT, MMU_PTE_P_MASK);
|
||||
MMU_ENTRY_READ, MMU_PTE_RW_MASK);
|
||||
#endif
|
||||
|
||||
stack_high = (char *)STACK_ROUND_DOWN(stack_buf + stack_size);
|
||||
|
@ -179,11 +179,7 @@ FUNC_NORETURN void z_arch_user_mode_enter(k_thread_entry_t user_entry,
|
|||
/* Set up the kernel stack used during privilege elevation */
|
||||
z_x86_mmu_set_flags(&z_x86_kernel_pdpt,
|
||||
(void *)(_current->stack_info.start - MMU_PAGE_SIZE),
|
||||
MMU_PAGE_SIZE,
|
||||
(MMU_ENTRY_PRESENT | MMU_ENTRY_WRITE |
|
||||
MMU_ENTRY_SUPERVISOR),
|
||||
(MMU_PTE_P_MASK | MMU_PTE_RW_MASK |
|
||||
MMU_PTE_US_MASK));
|
||||
MMU_PAGE_SIZE, MMU_ENTRY_WRITE, MMU_PTE_RW_MASK);
|
||||
|
||||
z_x86_userspace_enter(user_entry, p1, p2, p3, stack_end,
|
||||
_current->stack_info.start);
|
||||
|
|
|
@ -49,7 +49,7 @@ static inline void kernel_arch_init(void)
|
|||
#endif
|
||||
#if CONFIG_X86_STACK_PROTECTION
|
||||
z_x86_mmu_set_flags(&z_x86_kernel_pdpt, _interrupt_stack, MMU_PAGE_SIZE,
|
||||
MMU_ENTRY_NOT_PRESENT, MMU_PTE_P_MASK);
|
||||
MMU_ENTRY_READ, MMU_PTE_RW_MASK);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue