cluster: STABLE3 - rgmanager: Fix memory leaks during relocation

Lon Hohberger lon at fedoraproject.org
Tue Mar 30 16:50:39 UTC 2010


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=06ea41adb746746e67fb489405e46cd6f9c257d8
Commit:        06ea41adb746746e67fb489405e46cd6f9c257d8
Parent:        3e03a4a55527718f200f57bec6766e5f3d2ac8a5
Author:        Lon Hohberger <lhh at redhat.com>
AuthorDate:    Tue Mar 30 12:49:17 2010 -0400
Committer:     Lon Hohberger <lhh at redhat.com>
CommitterDate: Tue Mar 30 12:50:01 2010 -0400

rgmanager: Fix memory leaks during relocation

Resolves: bz#578249

Signed-off-by: Lon Hohberger <lhh at redhat.com>
---
 rgmanager/src/daemons/rg_state.c  |    2 ++
 rgmanager/src/daemons/rg_thread.c |    4 +++-
 2 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/rgmanager/src/daemons/rg_state.c b/rgmanager/src/daemons/rg_state.c
index d9f02b3..79ff59a 100644
--- a/rgmanager/src/daemons/rg_state.c
+++ b/rgmanager/src/daemons/rg_state.c
@@ -1745,6 +1745,7 @@ handle_relocate_req(char *svcName, int orig_request, int preferred_target,
 			 */
 			if (svc_start(svcName, RG_START) == 0) {
 				*new_owner = me;
+				free_member_list(backup);
 				return 0;
 			}
 		} else if (target == preferred_target) {
@@ -1757,6 +1758,7 @@ handle_relocate_req(char *svcName, int orig_request, int preferred_target,
 				/*
 				 * Great! We're done...
 				 */
+				free_member_list(backup);
 				return 0;
 			}
 
diff --git a/rgmanager/src/daemons/rg_thread.c b/rgmanager/src/daemons/rg_thread.c
index 517f8fe..446f2d2 100644
--- a/rgmanager/src/daemons/rg_thread.c
+++ b/rgmanager/src/daemons/rg_thread.c
@@ -701,6 +701,7 @@ rt_enqueue_request(const char *resgroupname, int request,
 	}
 
 	if (resgroup->rt_request == RG_RELOCATE) {
+		ret = -1;
 		switch(request) {
 		case RG_RELOCATE:
 		case RG_START_REMOTE:
@@ -711,13 +712,14 @@ rt_enqueue_request(const char *resgroupname, int request,
 				 request, 0);
 			msg_close(response_ctx);
 			msg_free_ctx(response_ctx);
+			ret = 0;
 			break;
 		}
 		fprintf(stderr, "Failed to queue request: Would block\n");
 		/* EWOULDBLOCK */
 		pthread_mutex_unlock(resgroup->rt_queue_mutex);
 		pthread_mutex_unlock(&reslist_mutex);
-		return 0;
+		return ret;
 	}
 
 	ret = rq_queue_request(resgroup->rt_queue, resgroup->rt_name,


More information about the cluster-commits mailing list