Module: xenomai-3 Branch: stable-3.0.x Commit: ed5025ddb8cc536be814b7851ff6d4e5aa90d398 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=ed5025ddb8cc536be814b7851ff6d4e5aa90d398
Author: Philippe Gerum <r...@xenomai.org> Date: Tue Jul 25 11:39:09 2017 +0200 alchemy/mutex: create: detect invalid caller earlier --- lib/alchemy/mutex.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/alchemy/mutex.c b/lib/alchemy/mutex.c index 3aa55dd..99ba8c6 100644 --- a/lib/alchemy/mutex.c +++ b/lib/alchemy/mutex.c @@ -108,7 +108,7 @@ int rt_mutex_create(RT_MUTEX *mutex, const char *name) struct alchemy_mutex *mcb; pthread_mutexattr_t mattr; struct service svc; - int ret = 0; + int ret; if (threadobj_irq_p()) return -EPERM; @@ -133,7 +133,12 @@ int rt_mutex_create(RT_MUTEX *mutex, const char *name) pthread_mutexattr_settype(&mattr, PTHREAD_MUTEX_RECURSIVE); /* pthread_mutexattr_setrobust_np() might not be implemented. */ pthread_mutexattr_setrobust_np(&mattr, PTHREAD_MUTEX_ROBUST_NP); - __RT(pthread_mutex_init(&mcb->lock, &mattr)); + ret = __RT(pthread_mutex_init(&mcb->lock, &mattr)); + if (ret) { + xnfree(mcb); + goto out; + } + pthread_mutexattr_destroy(&mattr); mcb->magic = mutex_magic; _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git