Return EPERM if mutex owner is not current thread but it tries to
unlock the mutex, old code confuses some programs when it returns EINVAL. Noticed by: bland
This commit is contained in:
parent
cc3782cbc7
commit
e4dcaa6ee9
@ -1001,12 +1001,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference)
|
|||||||
* mutex:
|
* mutex:
|
||||||
*/
|
*/
|
||||||
if ((*m)->m_owner != curthread)
|
if ((*m)->m_owner != curthread)
|
||||||
/*
|
ret = EPERM;
|
||||||
* Return an invalid argument error for no
|
|
||||||
* owner and a permission error otherwise:
|
|
||||||
*/
|
|
||||||
ret = (*m)->m_owner == NULL ? EINVAL : EPERM;
|
|
||||||
|
|
||||||
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
|
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
|
||||||
((*m)->m_count > 0))
|
((*m)->m_count > 0))
|
||||||
/* Decrement the count: */
|
/* Decrement the count: */
|
||||||
@ -1039,12 +1034,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference)
|
|||||||
* mutex:
|
* mutex:
|
||||||
*/
|
*/
|
||||||
if ((*m)->m_owner != curthread)
|
if ((*m)->m_owner != curthread)
|
||||||
/*
|
ret = EPERM;
|
||||||
* Return an invalid argument error for no
|
|
||||||
* owner and a permission error otherwise:
|
|
||||||
*/
|
|
||||||
ret = (*m)->m_owner == NULL ? EINVAL : EPERM;
|
|
||||||
|
|
||||||
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
|
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
|
||||||
((*m)->m_count > 0))
|
((*m)->m_count > 0))
|
||||||
/* Decrement the count: */
|
/* Decrement the count: */
|
||||||
@ -1096,12 +1086,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference)
|
|||||||
* mutex:
|
* mutex:
|
||||||
*/
|
*/
|
||||||
if ((*m)->m_owner != curthread)
|
if ((*m)->m_owner != curthread)
|
||||||
/*
|
ret = EPERM;
|
||||||
* Return an invalid argument error for no
|
|
||||||
* owner and a permission error otherwise:
|
|
||||||
*/
|
|
||||||
ret = (*m)->m_owner == NULL ? EINVAL : EPERM;
|
|
||||||
|
|
||||||
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
|
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
|
||||||
((*m)->m_count > 0))
|
((*m)->m_count > 0))
|
||||||
/* Decrement the count: */
|
/* Decrement the count: */
|
||||||
|
@ -1001,12 +1001,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference)
|
|||||||
* mutex:
|
* mutex:
|
||||||
*/
|
*/
|
||||||
if ((*m)->m_owner != curthread)
|
if ((*m)->m_owner != curthread)
|
||||||
/*
|
ret = EPERM;
|
||||||
* Return an invalid argument error for no
|
|
||||||
* owner and a permission error otherwise:
|
|
||||||
*/
|
|
||||||
ret = (*m)->m_owner == NULL ? EINVAL : EPERM;
|
|
||||||
|
|
||||||
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
|
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
|
||||||
((*m)->m_count > 0))
|
((*m)->m_count > 0))
|
||||||
/* Decrement the count: */
|
/* Decrement the count: */
|
||||||
@ -1039,12 +1034,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference)
|
|||||||
* mutex:
|
* mutex:
|
||||||
*/
|
*/
|
||||||
if ((*m)->m_owner != curthread)
|
if ((*m)->m_owner != curthread)
|
||||||
/*
|
ret = EPERM;
|
||||||
* Return an invalid argument error for no
|
|
||||||
* owner and a permission error otherwise:
|
|
||||||
*/
|
|
||||||
ret = (*m)->m_owner == NULL ? EINVAL : EPERM;
|
|
||||||
|
|
||||||
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
|
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
|
||||||
((*m)->m_count > 0))
|
((*m)->m_count > 0))
|
||||||
/* Decrement the count: */
|
/* Decrement the count: */
|
||||||
@ -1096,12 +1086,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference)
|
|||||||
* mutex:
|
* mutex:
|
||||||
*/
|
*/
|
||||||
if ((*m)->m_owner != curthread)
|
if ((*m)->m_owner != curthread)
|
||||||
/*
|
ret = EPERM;
|
||||||
* Return an invalid argument error for no
|
|
||||||
* owner and a permission error otherwise:
|
|
||||||
*/
|
|
||||||
ret = (*m)->m_owner == NULL ? EINVAL : EPERM;
|
|
||||||
|
|
||||||
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
|
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
|
||||||
((*m)->m_count > 0))
|
((*m)->m_count > 0))
|
||||||
/* Decrement the count: */
|
/* Decrement the count: */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user