diff --git a/src/bin/pg_basebackup/receivelog.c b/src/bin/pg_basebackup/receivelog.c
index 123f44526cb2e31333105c692f0b343e4b6e8b05..dc1d7d864845f38d6f2cc074ca6f21774c675d3c 100644
--- a/src/bin/pg_basebackup/receivelog.c
+++ b/src/bin/pg_basebackup/receivelog.c
@@ -81,6 +81,9 @@ mark_file_as_archived(const char *basedir, const char *fname)
 	{
 		fprintf(stderr, _("%s: could not fsync file \"%s\": %s\n"),
 				progname, tmppath, strerror(errno));
+
+		close(fd);
+
 		return false;
 	}