diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index a3bbe6fe6dbdee356a7bb524bccb038b60ebd3cc..05b078ae918b2a63b64926b46502eed22a51fa83 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -189,7 +189,7 @@ int main(int argc, char *argv[])
 		setrlimit(RLIMIT_NOFILE, &rlim);
 	}
 	if (getrlimit(RLIMIT_CORE, &rlim) == 0) {
-		rlim.rlim_cur = RLIM_INFINITY;
+		rlim.rlim_cur = rlim.rlim_max;
 		setrlimit(RLIMIT_CORE, &rlim);
 	}
 
@@ -204,13 +204,14 @@ int main(int argc, char *argv[])
 		exit(1);
 	}
 
-	if (slurmctld_conf.state_save_location)
+	if (slurmctld_conf.state_save_location) {
 		(void) mkdir(slurmctld_conf.state_save_location, 0700);
-
-	if (daemonize) {
 		if (chdir(slurmctld_conf.state_save_location))
 			fatal("chdir to %s error %m",
 			      slurmctld_conf.state_save_location);
+	}
+
+	if (daemonize) {
 		error_code = daemon(1, 0);
 		log_alter(log_opts, LOG_DAEMON, 
 			  slurmctld_conf.slurmctld_logfile);