diff --git a/src/slurmd/common/slurmd_cgroup.c b/src/slurmd/common/slurmd_cgroup.c
index 740f7baf3edbb07806786b61636496edb83d960e..90f692f405a5aa485873394a62c5eb1e6f6106f0 100644
--- a/src/slurmd/common/slurmd_cgroup.c
+++ b/src/slurmd/common/slurmd_cgroup.c
@@ -100,7 +100,6 @@ extern int init_system_cpuset_cgroup(void)
 {
 	int rc;
 	int fstatus = SLURM_ERROR;
-	xcgroup_t cpuset_cg;
 	char* cpus = NULL;
 	size_t cpus_size;
 	char* slurm_cgpath;
@@ -121,6 +120,8 @@ extern int init_system_cpuset_cgroup(void)
 	/* create slurm root cg in this cg namespace */
 	slurm_cgpath = _system_cgroup_create_slurm_cg(&cpuset_ns);
 	if ( slurm_cgpath == NULL ) {
+		xcgroup_ns_destroy(&cpuset_ns);
+		free_slurm_cgroup_conf(&slurm_cgroup_conf);
 		return SLURM_ERROR;
 	}
 
@@ -129,6 +130,7 @@ extern int init_system_cpuset_cgroup(void)
 	    != XCGROUP_SUCCESS) {
 		error("system cgroup: unable to load slurm cpuset xcgroup");
 		xfree(slurm_cgpath);
+		xcgroup_ns_destroy(&cpuset_ns);
 		free_slurm_cgroup_conf(&slurm_cgroup_conf);
 		return SLURM_ERROR;
 	}
@@ -147,7 +149,9 @@ again:
 		if (_xcgroup_cpuset_init(&slurm_cg) != XCGROUP_SUCCESS) {
 			xfree(slurm_cgpath);
 			xcgroup_destroy(&slurm_cg);
+			xcgroup_ns_destroy(&cpuset_ns);
 			free_slurm_cgroup_conf(&slurm_cgroup_conf);
+			xfree(cpus);
 			return SLURM_ERROR;
 		}
 	}
@@ -164,11 +168,9 @@ again:
 		goto error;
 	}
 	if (xcgroup_instanciate(&system_cpuset_cg) != XCGROUP_SUCCESS) {
-		xcgroup_destroy(&system_cpuset_cg);
 		goto error;
 	}
 	if (_xcgroup_cpuset_init(&system_cpuset_cg) != XCGROUP_SUCCESS) {
-		xcgroup_destroy(&system_cpuset_cg);
 		goto error;
 	}
 
@@ -177,7 +179,9 @@ again:
 	return SLURM_SUCCESS;
 
 error:
-	xcgroup_unlock(&cpuset_cg);
+	xcgroup_unlock(&system_cpuset_cg);
+	xcgroup_destroy(&system_cpuset_cg);
+	xcgroup_ns_destroy(&cpuset_ns);
 	free_slurm_cgroup_conf(&slurm_cgroup_conf);
 	return fstatus;
 }
@@ -185,7 +189,6 @@ error:
 extern int init_system_memory_cgroup(void)
 {
 	int fstatus = SLURM_ERROR;
-	xcgroup_t memory_cg;
 	char* slurm_cgpath;
 
 	/* read cgroup configuration */
@@ -255,6 +258,7 @@ extern int init_system_memory_cgroup(void)
 	/* create slurm root cg in this cg namespace */
 	slurm_cgpath = _system_cgroup_create_slurm_cg(&memory_ns);
 	if ( slurm_cgpath == NULL ) {
+		xcgroup_ns_destroy(&memory_ns);
 		free_slurm_cgroup_conf(&slurm_cgroup_conf);
 		return SLURM_ERROR;
 	}
@@ -270,7 +274,6 @@ extern int init_system_memory_cgroup(void)
 		goto error;
 	}
 	if (xcgroup_instanciate(&system_memory_cg) != XCGROUP_SUCCESS) {
-		xcgroup_destroy(&system_memory_cg);
 		goto error;
 	}
 
@@ -278,7 +281,6 @@ extern int init_system_memory_cgroup(void)
 	     != XCGROUP_SUCCESS ) {
 		error("system cgroup: unable to ask for hierarchical accounting"
 		      "of system memcg '%s'", system_memory_cg.path);
-		xcgroup_destroy (&system_memory_cg);
 		goto error;
 	}
 
@@ -287,8 +289,9 @@ extern int init_system_memory_cgroup(void)
 	return SLURM_SUCCESS;
 
 error:
-	xcgroup_unlock(&memory_cg);
-	xcgroup_destroy(&memory_cg);
+	xcgroup_unlock(&system_memory_cg);
+	xcgroup_destroy(&system_memory_cg);
+	xcgroup_ns_destroy(&memory_ns);
 	free_slurm_cgroup_conf(&slurm_cgroup_conf);
 	return fstatus;
 }
diff --git a/src/slurmd/slurmd/slurmd.c b/src/slurmd/slurmd/slurmd.c
index 59265b585ac6a009d77be3467347f8c6e713fe1e..6a53aae8b1e4b398a5f5b88129a13430303f51b0 100644
--- a/src/slurmd/slurmd/slurmd.c
+++ b/src/slurmd/slurmd/slurmd.c
@@ -638,7 +638,10 @@ _fill_registration_msg(slurm_node_registration_status_msg_t *msg)
 	msg->sockets	 = conf->sockets;
 	msg->cores	 = conf->cores;
 	msg->threads	 = conf->threads;
-	msg->cpu_spec_list = xstrdup (res_abs_cpus);
+	if (res_abs_cpus[0] == '\0')
+		msg->cpu_spec_list = NULL;
+	else
+		msg->cpu_spec_list = xstrdup (res_abs_cpus);
 	msg->real_memory = conf->real_memory_size;
 	msg->tmp_disk    = conf->tmp_disk_space;
 	msg->hash_val    = slurm_get_hash_val();
@@ -1981,6 +1984,7 @@ static int _core_spec_init(void)
 	res_abs_cores = xmalloc(ncores * 4 * sizeof(char));
 	res_core_bitmap = bit_alloc(ncores);
 	res_cpu_bitmap  = bit_alloc(ncpus);
+	res_abs_cpus[0] = '\0';
 
 	if (conf->cpu_spec_list != NULL) {
 		/* CPUSpecList designated in slurm.conf */