diff --git a/conts/posix/mm0/mm/task.c b/conts/posix/mm0/mm/task.c index 2e877f7..df117f0 100644 --- a/conts/posix/mm0/mm/task.c +++ b/conts/posix/mm0/mm/task.c @@ -520,18 +520,18 @@ int task_map_stack(struct vm_file *f, struct exec_file_desc *efd, struct tcb *task, struct args_struct *args, struct args_struct *env) { - unsigned long stack_used; - unsigned long arg_pages = __pfn(page_align_up(stack_used)); - char *args_on_stack; - void *mapped; - /* * Stack contains: args, environment, argc integer, * 2 Null integers as terminators. * * It also needs to be 8-byte aligned. */ - stack_used = align_up(args->size + env->size + sizeof(int) * 3 + 8, 8); + + unsigned long stack_used = align_up(args->size + env->size + sizeof(int) * 3 + 8, 8); + unsigned long arg_pages = __pfn(page_align_up(stack_used)); + char *args_on_stack; + void *mapped; + task->stack_end = __pfn_to_addr(cont_mem_regions.task->end); task->stack_start = __pfn_to_addr(cont_mem_regions.task->end) - DEFAULT_STACK_SIZE; task->args_end = task->stack_end;