Module: xenomai-2.6 Branch: master Commit: a2a6d456b23b9960f46964505668619b90b69400 URL: http://git.xenomai.org/?p=xenomai-2.6.git;a=commit;h=a2a6d456b23b9960f46964505668619b90b69400
Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> Date: Fri May 10 15:26:04 2013 +0200 posix: avoid races in pthread_set_name_np --- ksrc/skins/posix/syscall.c | 6 ------ ksrc/skins/posix/thread.c | 11 +++++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ksrc/skins/posix/syscall.c b/ksrc/skins/posix/syscall.c index 49ed764..2093edb 100644 --- a/ksrc/skins/posix/syscall.c +++ b/ksrc/skins/posix/syscall.c @@ -422,7 +422,6 @@ static int __pthread_set_name_np(struct pt_regs *regs) { char name[XNOBJECT_NAME_LEN]; struct pse51_hkey hkey; - struct task_struct *p; pthread_t k_tid; if (__xn_safe_strncpy_from_user(name, @@ -435,11 +434,6 @@ static int __pthread_set_name_np(struct pt_regs *regs) hkey.u_tid = __xn_reg_arg1(regs); hkey.mm = current->mm; k_tid = __pthread_find(&hkey); - if (k_tid) { - p = xnthread_user_task(&k_tid->threadbase); - strncpy(p->comm, name, sizeof(p->comm)); - p->comm[sizeof(p->comm) - 1] = '\0'; - } return -pthread_set_name_np(k_tid, name); } diff --git a/ksrc/skins/posix/thread.c b/ksrc/skins/posix/thread.c index 01fc699..78f5634 100644 --- a/ksrc/skins/posix/thread.c +++ b/ksrc/skins/posix/thread.c @@ -715,6 +715,9 @@ int pthread_set_mode_np(int clrmask, int setmask) */ int pthread_set_name_np(pthread_t thread, const char *name) { +#ifdef CONFIG_XENO_OPT_PERVASIVE + struct task_struct *p; +#endif /* CONFIG_XENO_OPT_PERVASIVE */ spl_t s; xnlock_get_irqsave(&nklock, s); @@ -727,6 +730,14 @@ int pthread_set_name_np(pthread_t thread, const char *name) snprintf(xnthread_name(&thread->threadbase), XNOBJECT_NAME_LEN, "%s", name); +#ifdef CONFIG_XENO_OPT_PERVASIVE + p = xnthread_user_task(&thread->threadbase); + if (p) { + strncpy(p->comm, name, sizeof(p->comm)); + p->comm[sizeof(p->comm) - 1] = '\0'; + } +#endif /* CONFIG_XENO_OPT_PERVASIVE */ + xnlock_put_irqrestore(&nklock, s); return 0; _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git