riscv: initialize privileged stack during thread init

This adds the bits to initialize the privileged stack when
a thread is transitioning to user mode. This prevents
information leaking if the stack is reused, and also aids
in calculating stack space usage during system calls.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
This commit is contained in:
Daniel Leung 2024-07-31 12:44:45 -07:00 committed by Anas Nashif
commit bb313355f3

View file

@ -144,6 +144,12 @@ FUNC_NORETURN void arch_user_mode_enter(k_thread_entry_t user_entry,
K_KERNEL_STACK_RESERVED + K_KERNEL_STACK_RESERVED +
CONFIG_PRIVILEGED_STACK_SIZE); CONFIG_PRIVILEGED_STACK_SIZE);
#ifdef CONFIG_INIT_STACKS
/* Initialize the privileged stack */
(void)memset((void *)_current->arch.priv_stack_start, 0xaa,
Z_STACK_PTR_ALIGN(K_KERNEL_STACK_RESERVED + CONFIG_PRIVILEGED_STACK_SIZE));
#endif /* CONFIG_INIT_STACKS */
top_of_user_stack = Z_STACK_PTR_ALIGN( top_of_user_stack = Z_STACK_PTR_ALIGN(
_current->stack_info.start + _current->stack_info.start +
_current->stack_info.size - _current->stack_info.size -