fix false ownership of mutexes due to tid reuse, using robust list
[musl] / src / thread / pthread_mutex_consistent.c
index baea0ff..0db976a 100644 (file)
@@ -2,8 +2,8 @@
 
 int pthread_mutex_consistent(pthread_mutex_t *m)
 {
-       if ((m->_m_type & 15) < 8) return EINVAL;
-       if ((m->_m_lock & 0x3fffffff) != __pthread_self()->tid)
+       if (!(m->_m_type & 8)) return EINVAL;
+       if ((m->_m_lock & 0x7fffffff) != __pthread_self()->tid)
                return EPERM;
        m->_m_type -= 8;
        return 0;