Gitweb:
http://git.fedorahosted.org/git/?p=cluster.git;a=commitdiff;h=75e0fd65e87...
Commit: 75e0fd65e8713689585781724628cf69dfed4a92
Parent: 156a32063baa99fefdb445c68111b174dc06753e
Author: Ryan McCabe <rmccabe(a)redhat.com>
AuthorDate: Fri Jul 12 15:42:45 2013 -0400
Committer: Ryan McCabe <rmccabe(a)redhat.com>
CommitterDate: Fri Jul 12 15:42:45 2013 -0400
rgmanger: Don't destroy locked mutexes
Unlock locked mutexes before calling pthread_mutex_destroy()
on them.
Related: rhbz#983296
Signed-off-by: Ryan McCabe <rmccabe(a)redhat.com>
---
rgmanager/src/clulib/libcpglock.c | 1 +
rgmanager/src/daemons/rg_thread.c | 18 +++++-------------
2 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/rgmanager/src/clulib/libcpglock.c b/rgmanager/src/clulib/libcpglock.c
index f99edd4..75fc9f6 100644
--- a/rgmanager/src/clulib/libcpglock.c
+++ b/rgmanager/src/clulib/libcpglock.c
@@ -279,6 +279,7 @@ cpg_lock_fin(void *handle)
close(h->fd);
+ pthread_mutex_unlock(&h->mutex);
pthread_mutex_destroy(&h->mutex);
free(h);
return 0;
diff --git a/rgmanager/src/daemons/rg_thread.c b/rgmanager/src/daemons/rg_thread.c
index 4f46c25..1d7b1fb 100644
--- a/rgmanager/src/daemons/rg_thread.c
+++ b/rgmanager/src/daemons/rg_thread.c
@@ -533,20 +533,12 @@ resgroup_thread_main(void *arg)
}
*/
+ pthread_mutex_unlock(&my_queue_mutex);
mystatus = pthread_mutex_destroy(&my_queue_mutex);
- if (mystatus != 0)
- {
- if (mystatus == EBUSY) {
- pthread_mutex_unlock(&my_queue_mutex);
- }
-
- mystatus = pthread_mutex_destroy(&my_queue_mutex);
- if (mystatus != 0) {
- fprintf (stderr, "mutex_destroy=%d err=%d %p\n",
- mystatus, errno, &my_queue_mutex);
-
- fflush (stderr);
- }
+ if (mystatus != 0) {
+ fprintf(stderr, "mutex_destroy=%d err=%d %p\n",
+ mystatus, errno, &my_queue_mutex);
+ fflush (stderr);
}
list_remove(&resthread_list, myself);