diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java
index 73af8ba..10a54ee 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java
@@ -697,7 +697,7 @@
 					FileUtils.delete(gitDir, FileUtils.RECURSIVE
 							| FileUtils.SKIP_MISSING | FileUtils.IGNORE_ERRORS);
 				} else {
-					deleteChildren(directory);
+					deleteChildren(gitDir);
 				}
 			}
 		} catch (IOException e) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java
index d554562..310bc83 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java
@@ -56,6 +56,7 @@
 import java.text.SimpleDateFormat;
 import java.util.Locale;
 import java.util.TimeZone;
+import java.util.concurrent.atomic.AtomicReference;
 
 import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.eclipse.jgit.errors.CorruptObjectException;
@@ -97,9 +98,9 @@
 	private static class Default extends SystemReader {
 		private volatile String hostname;
 
-		private volatile FileBasedConfig systemConfig;
+		private AtomicReference<FileBasedConfig> systemConfig = new AtomicReference<>();
 
-		private volatile FileBasedConfig userConfig;
+		private volatile AtomicReference<FileBasedConfig> userConfig = new AtomicReference<>();
 
 		@Override
 		public String getenv(String variable) {
@@ -113,10 +114,13 @@
 
 		@Override
 		public FileBasedConfig openSystemConfig(Config parent, FS fs) {
-			if (systemConfig == null) {
-				systemConfig = createSystemConfig(parent, fs);
+			FileBasedConfig c = systemConfig.get();
+			if (c == null) {
+				systemConfig.compareAndSet(null,
+						createSystemConfig(parent, fs));
+				c = systemConfig.get();
 			}
-			return systemConfig;
+			return c;
 		}
 
 		protected FileBasedConfig createSystemConfig(Config parent, FS fs) {
@@ -142,40 +146,35 @@
 
 		@Override
 		public FileBasedConfig openUserConfig(Config parent, FS fs) {
-			if (userConfig == null) {
-				File home = fs.userHome();
-				userConfig = new FileBasedConfig(parent,
-						new File(home, ".gitconfig"), fs); //$NON-NLS-1$
+			FileBasedConfig c = userConfig.get();
+			if (c == null) {
+				userConfig.compareAndSet(null, new FileBasedConfig(parent,
+						new File(fs.userHome(), ".gitconfig"), fs)); //$NON-NLS-1$
+				c = userConfig.get();
 			}
-			return userConfig;
+			return c;
 		}
 
 		@Override
 		public StoredConfig getSystemConfig()
 				throws IOException, ConfigInvalidException {
-			if (systemConfig == null) {
-				systemConfig = createSystemConfig(null, FS.DETECTED);
-			}
-			if (systemConfig.isOutdated()) {
+			FileBasedConfig c = openSystemConfig(null, FS.DETECTED);
+			if (c.isOutdated()) {
 				LOG.debug("loading system config {}", systemConfig); //$NON-NLS-1$
-				systemConfig.load();
+				c.load();
 			}
-			return systemConfig;
+			return c;
 		}
 
 		@Override
 		public StoredConfig getUserConfig()
 				throws IOException, ConfigInvalidException {
-			if (userConfig == null) {
-				userConfig = openUserConfig(getSystemConfig(), FS.DETECTED);
-			} else {
-				getSystemConfig();
-			}
-			if (userConfig.isOutdated()) {
+			FileBasedConfig c = openUserConfig(getSystemConfig(), FS.DETECTED);
+			if (c.isOutdated()) {
 				LOG.debug("loading user config {}", userConfig); //$NON-NLS-1$
-				userConfig.load();
+				c.load();
 			}
-			return userConfig;
+			return c;
 		}
 
 		@Override
