From 49d18d1ea6c20e6614a390625565166d1f907214 Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Wed, 11 Feb 2009 18:06:12 +0000
Subject: [PATCH] Fix two memory leaks in slurmctld related to advanced
 reservations

---
 src/common/slurm_protocol_defs.c | 20 ++++++++++----------
 src/common/slurm_protocol_defs.h |  2 +-
 src/slurmctld/proc_req.c         |  2 +-
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c
index 89b2ec88967..abbade28a44 100644
--- a/src/common/slurm_protocol_defs.c
+++ b/src/common/slurm_protocol_defs.c
@@ -283,12 +283,6 @@ void inline slurm_free_part_info_request_msg(
 	xfree(msg);
 }
 
-void inline slurm_free_resv_info_request_msg(
-		resv_info_request_msg_t *msg)
-{
-	xfree(msg);
-}
-
 void slurm_free_job_desc_msg(job_desc_msg_t * msg)
 {
 	int i;
@@ -321,6 +315,7 @@ void slurm_free_job_desc_msg(job_desc_msg_t * msg)
 		xfree(msg->partition);
 		xfree(msg->ramdiskimage);
 		xfree(msg->req_nodes);
+		xfree(msg->reservation);
 		xfree(msg->resp_host);
 		xfree(msg->script);
 		select_g_free_jobinfo(&msg->select_jobinfo);
@@ -463,6 +458,11 @@ void slurm_free_resv_name_msg(reservation_name_msg_t * msg)
 	}
 }
 
+void slurm_free_resv_info_request_msg(resv_info_request_msg_t * msg)
+{
+	xfree(msg);
+}
+
 void slurm_free_job_step_create_request_msg(job_step_create_request_msg_t *
 					    msg)
 {
@@ -479,9 +479,7 @@ void slurm_free_job_step_create_request_msg(job_step_create_request_msg_t *
 void slurm_free_complete_job_allocation_msg(
 	complete_job_allocation_msg_t * msg)
 {
-	if (msg) {
-		xfree(msg);
-	}
+	xfree(msg);
 }
 
 void slurm_free_complete_batch_script_msg(complete_batch_script_msg_t * msg)
@@ -1568,6 +1566,9 @@ extern int slurm_free_msg_data(slurm_msg_type_t type, void *data)
 	case RESPONSE_CREATE_RESERVATION:		
 		slurm_free_resv_name_msg(data);
 		break;
+	case REQUEST_RESERVATION_INFO:
+		slurm_free_resv_info_request_msg(data);
+		break;
 	case REQUEST_NODE_REGISTRATION_STATUS:
 		slurm_free_node_registration_status_msg(data);
 		break;
@@ -1659,7 +1660,6 @@ extern int slurm_free_msg_data(slurm_msg_type_t type, void *data)
 	case REQUEST_DAEMON_STATUS:
 	case REQUEST_HEALTH_CHECK:
 	case ACCOUNTING_FIRST_REG:
-	case REQUEST_RESERVATION_INFO:
 		/* No body to free */
 		break;
 	case ACCOUNTING_UPDATE_MSG:
diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h
index 2a50f40156d..b86729039c3 100644
--- a/src/common/slurm_protocol_defs.h
+++ b/src/common/slurm_protocol_defs.h
@@ -840,7 +840,7 @@ void inline slurm_free_update_part_msg(update_part_msg_t * msg);
 void inline slurm_free_delete_part_msg(delete_part_msg_t * msg);
 void inline slurm_free_update_resv_msg(reserve_request_msg_t * msg);
 void inline slurm_free_resv_name_msg(reservation_name_msg_t * msg);
-void inline slurm_free_resv_info_msg(reserve_info_msg_t * msg);
+void inline slurm_free_resv_info_request_msg(resv_info_request_msg_t * msg);
 void inline
 slurm_free_job_step_create_request_msg(job_step_create_request_msg_t * msg);
 void inline
diff --git a/src/slurmctld/proc_req.c b/src/slurmctld/proc_req.c
index d0a9dc2ae9f..5ae2e4b75b2 100644
--- a/src/slurmctld/proc_req.c
+++ b/src/slurmctld/proc_req.c
@@ -281,7 +281,7 @@ void slurmctld_req (slurm_msg_t * msg)
 		break;
 	case REQUEST_RESERVATION_INFO:
 		_slurm_rpc_resv_show(msg);
-		/* No body to free */
+		slurm_free_resv_info_request_msg(msg->data);
 		break;
 	case REQUEST_NODE_REGISTRATION_STATUS:
 		error("slurmctld is talking with itself. "
-- 
GitLab