sched/vfork: allocate tls_info_s instead task_info_s from stack

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
Xiang Xiao
2021-11-02 02:35:52 +08:00
committed by Gustavo Henrique Nihei
parent 131e8dc7e7
commit b1879d5d24
+4 -3
View File
@@ -96,7 +96,7 @@ FAR struct task_tcb_s *nxtask_setup_vfork(start_t retaddr)
FAR struct tcb_s *ptcb = this_task(); FAR struct tcb_s *ptcb = this_task();
FAR struct task_tcb_s *parent; FAR struct task_tcb_s *parent;
FAR struct task_tcb_s *child; FAR struct task_tcb_s *child;
FAR struct task_info_s *info; FAR struct tls_info_s *info;
size_t stack_size; size_t stack_size;
uint8_t ttype; uint8_t ttype;
int priority; int priority;
@@ -173,7 +173,7 @@ FAR struct task_tcb_s *nxtask_setup_vfork(start_t retaddr)
/* Setup thread local storage */ /* Setup thread local storage */
info = up_stack_frame(&child->cmn, sizeof(struct task_info_s)); info = up_stack_frame(&child->cmn, sizeof(struct tls_info_s));
if (info == NULL) if (info == NULL)
{ {
ret = -ENOMEM; ret = -ENOMEM;
@@ -181,7 +181,8 @@ FAR struct task_tcb_s *nxtask_setup_vfork(start_t retaddr)
} }
DEBUGASSERT(info == child->cmn.stack_alloc_ptr); DEBUGASSERT(info == child->cmn.stack_alloc_ptr);
memcpy(info, parent->cmn.stack_alloc_ptr, sizeof(struct task_info_s)); memcpy(info, parent->cmn.stack_alloc_ptr, sizeof(struct tls_info_s));
info->tl_task = child->cmn.group->tg_info;
/* Get the priority of the parent task */ /* Get the priority of the parent task */