From: Jan Kiszka <jan.kis...@siemens.com>

Make sure the thread field of tcb->self is always initialized as
rt_task_self returns it.

Reported-by: Mauro Salvini <mauro.salv...@smigroup.net>
Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>
---
 lib/alchemy/task.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/alchemy/task.c b/lib/alchemy/task.c
index 079d11b6e7..949a996d00 100644
--- a/lib/alchemy/task.c
+++ b/lib/alchemy/task.c
@@ -443,10 +443,12 @@ int rt_task_create(RT_TASK *task, const char *name,
        cta.stacksize = stksize;
 
        ret = __bt(copperplate_create_thread(&cta, &tcb->thobj.ptid));
-       if (ret)
+       if (ret) {
                delete_tcb(tcb);
-       else
+       } else {
+               tcb->self.thread = tcb->thobj.ptid;
                task->thread = tcb->thobj.ptid;
+       }
 out:
        CANCEL_RESTORE(svc);
 
-- 
2.16.4


-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

Reply via email to