From c6102a473100f43b1fcd789bbe48bae8655f130d Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Mon, 23 Feb 2009 22:08:31 +0000
Subject: [PATCH] plug a couple of memory leaks related to reserved ports

---
 src/slurmctld/port_mgr.c | 6 +++++-
 src/slurmctld/step_mgr.c | 5 +++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/slurmctld/port_mgr.c b/src/slurmctld/port_mgr.c
index d3ab1f22081..cb228ebfe83 100644
--- a/src/slurmctld/port_mgr.c
+++ b/src/slurmctld/port_mgr.c
@@ -168,6 +168,8 @@ extern int reserve_port_config(char *mpi_params)
 	if (tmp_p == NULL) {
 		if (port_resv_table) {
 			info("Clearing port reservations");
+			for (i=0; i<port_resv_cnt; i++)
+				bit_free(port_resv_table[i]);
 			xfree(port_resv_table);
 			port_resv_cnt = 0;
 			port_resv_min = port_resv_max = 0;
@@ -188,8 +190,10 @@ extern int reserve_port_config(char *mpi_params)
 		return SLURM_ERROR;
 	}
 
-	if ((p_min == port_resv_min) && (p_max == port_resv_max))
+	if ((p_min == port_resv_min) && (p_max == port_resv_max)) {
+		_dump_resv_port_info();
 		return SLURM_SUCCESS;	/* No change */
+	}
 
 	port_resv_min = p_min;
 	port_resv_max = p_max;
diff --git a/src/slurmctld/step_mgr.c b/src/slurmctld/step_mgr.c
index d36d5fb8750..9ea9b6d2643 100644
--- a/src/slurmctld/step_mgr.c
+++ b/src/slurmctld/step_mgr.c
@@ -1333,6 +1333,7 @@ step_create(job_step_create_request_msg_t *step_specs,
 					   (uint16_t)cpus_per_task,
 					   step_specs->task_dist,
 					   step_specs->plane_size);
+		xfree(step_node_list);
 		if (!step_ptr->step_layout) {
 			delete_step_record (job_ptr, step_ptr->step_id);
 			return SLURM_ERROR;
@@ -1369,10 +1370,10 @@ step_create(job_step_create_request_msg_t *step_specs,
 			return ESLURM_INTERCONNECT_FAILURE;
 		}
 		step_alloc_lps(step_ptr);
-	}
+	} else
+		xfree(step_node_list);
 	if (checkpoint_alloc_jobinfo (&step_ptr->check_job) < 0)
 		fatal ("step_create: checkpoint_alloc_jobinfo error");
-	xfree(step_node_list);
 	*new_step_record = step_ptr;
 	jobacct_storage_g_step_start(acct_db_conn, step_ptr);
 	return SLURM_SUCCESS;
-- 
GitLab