cluster: STABLE31 - rgmanager: Fix race in shutdown vs. notification

Lon Hohberger lon at fedoraproject.org
Tue Aug 2 14:49:44 UTC 2011


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=538becbe4b3779bf8173e6c09164aa7c8d5521ad
Commit:        538becbe4b3779bf8173e6c09164aa7c8d5521ad
Parent:        b5f6b9d830bc4111d6de37ffe5bd7ea2c30f989c
Author:        Lon Hohberger <lhh at redhat.com>
AuthorDate:    Tue Aug 2 09:53:20 2011 -0400
Committer:     Lon Hohberger <lhh at redhat.com>
CommitterDate: Tue Aug 2 10:47:38 2011 -0400

rgmanager: Fix race in shutdown vs. notification

The check of db prior to taking the mutex was done as a tiny performance
gain in the event that there was no dbus connection, but causes
dbus_connection_get_is_connected() to crash the program if db is NULL.

Resolves: rhbz#697446

Signed-off-by: Lon Hohberger <lhh at redhat.com>
---
 rgmanager/src/daemons/update-dbus.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/rgmanager/src/daemons/update-dbus.c b/rgmanager/src/daemons/update-dbus.c
index f465d1d..bff1644 100644
--- a/rgmanager/src/daemons/update-dbus.c
+++ b/rgmanager/src/daemons/update-dbus.c
@@ -149,12 +149,12 @@ _rgm_dbus_notify(const char *svcname,
 	DBusMessage *msg = NULL;
 	int ret = -1;
 
+	pthread_mutex_lock(&mu);
+
 	if (!db) {
-		goto out_free;
+		goto out_unlock;
 	}
 
-	pthread_mutex_lock(&mu);
-
 	/* Check to ensure the connection is still valid. If it
 	 * isn't, clean up and shut down the dbus connection.
 	 *


More information about the cluster-commits mailing list