diff --git a/src/plugins/slurmctld/nonstop/read_config.c b/src/plugins/slurmctld/nonstop/read_config.c
index 22e09990240c8aae3b0d07c8e0e872202947afc8..0c416597b3a805172deb1f625b93aaaa4e379ac2 100644
--- a/src/plugins/slurmctld/nonstop/read_config.c
+++ b/src/plugins/slurmctld/nonstop/read_config.c
@@ -365,7 +365,7 @@ extern void create_hot_spare_resv(void)
 						  RESERVE_FLAG_IGN_JOBS;
 			resv_msg.name		= resv_name;
 			resv_msg.node_cnt	= node_cnt;
-			resv_msg.partition	= part_ptr->name;
+			resv_msg.partition	= xstrdup(part_ptr->name);
 			resv_msg.start_time	= now;
 			resv_msg.users		= xstrdup("root");
 			if (find_resv_name(resv_name)) {
@@ -377,6 +377,7 @@ extern void create_hot_spare_resv(void)
 				     resv_name);
 				(void) create_resv(&resv_msg);
 			}
+			xfree(resv_msg.partition);
 			xfree(resv_msg.users);
 			break;
 		}
diff --git a/src/slurmctld/reservation.c b/src/slurmctld/reservation.c
index a581b3304f35049a4e4cfbec22c9f3bbb273d3e7..06c8d45351dda8bf5779dbf3bf54ce7c50074a19 100644
--- a/src/slurmctld/reservation.c
+++ b/src/slurmctld/reservation.c
@@ -2391,7 +2391,7 @@ extern int update_resv(resv_desc_msg_t *resv_desc_ptr)
 			goto update_failure;
 		}
 		xfree(resv_ptr->partition);
-		resv_ptr->partition	= xstrdup(resv_desc_ptr->partition);
+		resv_ptr->partition	= resv_desc_ptr->partition;
 		resv_desc_ptr->partition = NULL; /* Nothing left to free */
 		resv_ptr->part_ptr	= part_ptr;
 	}