Module: xenomai-3
Branch: next
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

Reply via email to