diff --git a/src/backend/access/transam/xlogreader.c b/src/backend/access/transam/xlogreader.c
index f3fea5132f..7e25e2050a 100644
--- a/src/backend/access/transam/xlogreader.c
+++ b/src/backend/access/transam/xlogreader.c
@@ -144,6 +144,9 @@ XLogReaderFree(XLogReaderState *state)
 	if (state->main_data)
 		pfree(state->main_data);
 
+	if (state->seg.ws_file >= 0)
+		close(state->seg.ws_file);
+
 	pfree(state->errormsg_buf);
 	if (state->readRecordBuf)
 		pfree(state->readRecordBuf);
