Module: xenomai-forge Branch: master Commit: 83b187f61d730d7b1edb1e83199854d04a1bd219 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=83b187f61d730d7b1edb1e83199854d04a1bd219
Author: Philippe Gerum <r...@xenomai.org> Date: Fri Sep 6 19:15:14 2013 +0200 cobalt/posix/thread: fix potential race in exit handler --- kernel/cobalt/posix/thread.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/kernel/cobalt/posix/thread.c b/kernel/cobalt/posix/thread.c index 83f94d0..68d15f1 100644 --- a/kernel/cobalt/posix/thread.c +++ b/kernel/cobalt/posix/thread.c @@ -213,6 +213,7 @@ EXPORT_SYMBOL_GPL(cobalt_thread_find_local); struct xnpersonality *cobalt_thread_exit(struct xnthread *curr) { struct cobalt_thread *thread; + spl_t s; thread = container_of(curr, struct cobalt_thread, threadbase); /* @@ -220,11 +221,13 @@ struct xnpersonality *cobalt_thread_exit(struct xnthread *curr) * userland. */ thread_unhash(&thread->hkey); + xnlock_get_irqsave(&nklock, s); cobalt_mark_deleted(thread); + list_del(&thread->link); + xnlock_put_irqrestore(&nklock, s); cobalt_signal_flush(thread); xnsynch_destroy(&thread->monitor_synch); xnsynch_destroy(&thread->sigwait); - list_del(&thread->link); /* We don't stack over any personality, no chaining. */ return NULL; _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git