summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2004-01-17 03:09:57 +0000
committerdavidxu <davidxu@FreeBSD.org>2004-01-17 03:09:57 +0000
commit47933921d05e2c40de9144ea6dbb136f34390da8 (patch)
treea8e6248b52a3aaf5088a6fc7e11d963636eeaa3e
parentf9aac56ad7dea97108acd58f36d211e416fb0322 (diff)
downloadFreeBSD-src-47933921d05e2c40de9144ea6dbb136f34390da8.zip
FreeBSD-src-47933921d05e2c40de9144ea6dbb136f34390da8.tar.gz
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
-rw-r--r--lib/libkse/thread/thr_mutex.c21
-rw-r--r--lib/libpthread/thread/thr_mutex.c21
2 files changed, 6 insertions, 36 deletions
diff --git a/lib/libkse/thread/thr_mutex.c b/lib/libkse/thread/thr_mutex.c
index 464bc39..1232f33 100644
--- a/lib/libkse/thread/thr_mutex.c
+++ b/lib/libkse/thread/thr_mutex.c
@@ -1001,12 +1001,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference)
* mutex:
*/
if ((*m)->m_owner != curthread)
- /*
- * Return an invalid argument error for no
- * owner and a permission error otherwise:
- */
- ret = (*m)->m_owner == NULL ? EINVAL : EPERM;
-
+ ret = EPERM;
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
((*m)->m_count > 0))
/* Decrement the count: */
@@ -1039,12 +1034,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference)
* mutex:
*/
if ((*m)->m_owner != curthread)
- /*
- * Return an invalid argument error for no
- * owner and a permission error otherwise:
- */
- ret = (*m)->m_owner == NULL ? EINVAL : EPERM;
-
+ ret = EPERM;
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
((*m)->m_count > 0))
/* Decrement the count: */
@@ -1096,12 +1086,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference)
* mutex:
*/
if ((*m)->m_owner != curthread)
- /*
- * Return an invalid argument error for no
- * owner and a permission error otherwise:
- */
- ret = (*m)->m_owner == NULL ? EINVAL : EPERM;
-
+ ret = EPERM;
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
((*m)->m_count > 0))
/* Decrement the count: */
diff --git a/lib/libpthread/thread/thr_mutex.c b/lib/libpthread/thread/thr_mutex.c
index 464bc39..1232f33 100644
--- a/lib/libpthread/thread/thr_mutex.c
+++ b/lib/libpthread/thread/thr_mutex.c
@@ -1001,12 +1001,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference)
* mutex:
*/
if ((*m)->m_owner != curthread)
- /*
- * Return an invalid argument error for no
- * owner and a permission error otherwise:
- */
- ret = (*m)->m_owner == NULL ? EINVAL : EPERM;
-
+ ret = EPERM;
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
((*m)->m_count > 0))
/* Decrement the count: */
@@ -1039,12 +1034,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference)
* mutex:
*/
if ((*m)->m_owner != curthread)
- /*
- * Return an invalid argument error for no
- * owner and a permission error otherwise:
- */
- ret = (*m)->m_owner == NULL ? EINVAL : EPERM;
-
+ ret = EPERM;
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
((*m)->m_count > 0))
/* Decrement the count: */
@@ -1096,12 +1086,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference)
* mutex:
*/
if ((*m)->m_owner != curthread)
- /*
- * Return an invalid argument error for no
- * owner and a permission error otherwise:
- */
- ret = (*m)->m_owner == NULL ? EINVAL : EPERM;
-
+ ret = EPERM;
else if (((*m)->m_type == PTHREAD_MUTEX_RECURSIVE) &&
((*m)->m_count > 0))
/* Decrement the count: */
OpenPOWER on IntegriCloud