diff --git a/cdr/cdr_syslog.c b/cdr/cdr_syslog.c
index 6d9a6df3bc4df9531d8d4615d9cf00a93873ac63..63545208eb1c6f602b5f0eb9fd38a6017f0dfa1b 100644
--- a/cdr/cdr_syslog.c
+++ b/cdr/cdr_syslog.c
@@ -264,8 +264,10 @@ static int reload(void)
 		return AST_MODULE_LOAD_DECLINE;
 	}
 
-	free_config();
-	res = load_config(1);
+	if ((res = load_config(1))) {
+		free_config();
+	}
+
 	AST_RWLIST_UNLOCK(&sinks);
 
 	return res ? AST_MODULE_LOAD_DECLINE : AST_MODULE_LOAD_SUCCESS;