From 9e4f14884cd3d96f485c24560dcb1a78f5d85f58 Mon Sep 17 00:00:00 2001
From: Brian Christiansen <brian@schedmd.com>
Date: Mon, 17 Oct 2016 13:32:14 -0600
Subject: [PATCH] Prevent invalid read when fed_mgr is finishing

---
 src/slurmctld/fed_mgr.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/slurmctld/fed_mgr.c b/src/slurmctld/fed_mgr.c
index 7b3f6cccc81..a767913b2b9 100644
--- a/src/slurmctld/fed_mgr.c
+++ b/src/slurmctld/fed_mgr.c
@@ -714,10 +714,14 @@ extern int fed_mgr_fini()
 
 	lock_slurmctld(fed_write_lock);
 
-	slurm_persist_conn_recv_server_fini();
-
+	/* Call _leave_federation() before slurm_persist_conn_recv_server_fini()
+	 * as this will NULL out the cluster's recv persistent connection before
+	 * _server_fini() actually destroy's it. That way the cluster's recv
+	 * connection won't be pointing to bad memory. */
 	_leave_federation();
 
+	slurm_persist_conn_recv_server_fini();
+
 	unlock_slurmctld(fed_write_lock);
 
 	return SLURM_SUCCESS;
-- 
GitLab