[Xenomai-git] Philippe Gerum : alchemy/mutex: create: detect invalid caller earlier
Module: xenomai-3 Branch: next Commit: ed5025ddb8cc536be814b7851ff6d4e5aa90d398 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=ed5025ddb8cc536be814b7851ff6d4e5aa90d398 Author: Philippe GerumDate: 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(, PTHREAD_MUTEX_RECURSIVE); /* pthread_mutexattr_setrobust_np() might not be implemented. */ pthread_mutexattr_setrobust_np(, PTHREAD_MUTEX_ROBUST_NP); - __RT(pthread_mutex_init(>lock, )); + ret = __RT(pthread_mutex_init(>lock, )); + if (ret) { + xnfree(mcb); + goto out; + } + pthread_mutexattr_destroy(); mcb->magic = mutex_magic; ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : alchemy/mutex: create: detect invalid caller earlier
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 GerumDate: 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(, PTHREAD_MUTEX_RECURSIVE); /* pthread_mutexattr_setrobust_np() might not be implemented. */ pthread_mutexattr_setrobust_np(, PTHREAD_MUTEX_ROBUST_NP); - __RT(pthread_mutex_init(>lock, )); + ret = __RT(pthread_mutex_init(>lock, )); + if (ret) { + xnfree(mcb); + goto out; + } + pthread_mutexattr_destroy(); mcb->magic = mutex_magic; ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git