From 42fd9638367ee56cbb5a86fc88a41a21edaeef1c Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Mon, 4 Aug 2003 23:43:52 +0000
Subject: [PATCH] Plug possible memory leak on reconfig command.

---
 src/slurmctld/read_config.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/slurmctld/read_config.c b/src/slurmctld/read_config.c
index c58c5ef625a..0840929ae76 100644
--- a/src/slurmctld/read_config.c
+++ b/src/slurmctld/read_config.c
@@ -821,13 +821,16 @@ static void _restore_node_state(struct node_record *old_node_table_ptr,
 		node_ptr  = find_node_record(old_node_table_ptr[i].name);
 		if (node_ptr == NULL)
 			continue;
-		node_ptr->node_state	= old_node_table_ptr[i].node_state;
-		node_ptr->last_response	= old_node_table_ptr[i].last_response;
-		node_ptr->cpus		= old_node_table_ptr[i].cpus;
-		node_ptr->real_memory	= old_node_table_ptr[i].real_memory;
-		node_ptr->tmp_disk	= old_node_table_ptr[i].tmp_disk;
-		node_ptr->reason	= old_node_table_ptr[i].reason;
-		old_node_table_ptr[i].reason = NULL;
+		node_ptr->node_state    = old_node_table_ptr[i].node_state;
+		node_ptr->last_response = old_node_table_ptr[i].last_response;
+		node_ptr->cpus          = old_node_table_ptr[i].cpus;
+		node_ptr->real_memory   = old_node_table_ptr[i].real_memory;
+		node_ptr->tmp_disk      = old_node_table_ptr[i].tmp_disk;
+		if(node_ptr->reason == NULL) {
+			/* Recover only if not explicitly set in slurm.conf */
+			node_ptr->reason	= old_node_table_ptr[i].reason;
+			old_node_table_ptr[i].reason = NULL;
+		}
 	}
 }
 
-- 
GitLab