diff --git a/builtin-config.c b/builtin-config.c
index a2d656edb..78724fbf7 100644
--- a/builtin-config.c
+++ b/builtin-config.c
@@ -340,7 +340,7 @@ int cmd_config(int argc, const char **argv, const char *unused_prefix)
 		if (!is_absolute_path(given_config_file) && prefix)
 			config_exclusive_filename = prefix_filename(prefix,
 								    strlen(prefix),
-								    argv[2]);
+								    given_config_file);
 		else
 			config_exclusive_filename = given_config_file;
 	}
diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh
index 83b729401..9e74b1f14 100755
--- a/t/t1300-repo-config.sh
+++ b/t/t1300-repo-config.sh
@@ -398,6 +398,17 @@ test_expect_success 'alternative GIT_CONFIG' 'cmp output expect'
 test_expect_success 'alternative GIT_CONFIG (--file)' \
 	'git config --file other-config -l > output && cmp output expect'
 
+test_expect_success 'refer config from subdirectory' '
+	mkdir x &&
+	(
+		cd x &&
+		echo strasse >expect
+		git config --get --file ../other-config ein.bahn >actual &&
+		test_cmp expect actual
+	)
+
+'
+
 GIT_CONFIG=other-config git config anwohner.park ausweis
 
 cat > expect << EOF