check mutex owner in pthread_cond_wait
[musl] / src / thread / pthread_cond_timedwait.c
index db2744b..faa7c23 100644 (file)
@@ -37,6 +37,9 @@ int pthread_cond_timedwait(pthread_cond_t *c, pthread_mutex_t *m, const struct t
        struct cm cm = { .c=c, .m=m };
        int r, e=0, seq;
 
+       if ((m->_m_type&3) == PTHREAD_MUTEX_ERRORCHECK &&
+               (m->_m_lock&INT_MAX) != __pthread_self()->tid) return EPERM;
+
        if (ts && ts->tv_nsec >= 1000000000UL)
                return EINVAL;