diff --git a/src/backend/utils/adt/genfile.c b/src/backend/utils/adt/genfile.c
index d34182a7b0..7ea7ca21b0 100644
--- a/src/backend/utils/adt/genfile.c
+++ b/src/backend/utils/adt/genfile.c
@@ -126,8 +126,10 @@ read_binary_file(const char *filename, int64 seek_offset, int64 bytes_to_read,
 							filename)));
 	}
 
-	if (fseeko(file, (off_t) seek_offset,
-			   (seek_offset >= 0) ? SEEK_SET : SEEK_END) != 0)
+    /* Avoid syscall fseeko, if seek_offset is zero */
+	if (seek_offset != 0 &&
+		fseeko(file, (off_t) seek_offset,
+			   (seek_offset > 0) ? SEEK_SET : SEEK_END) != 0)
 		ereport(ERROR,
 				(errcode_for_file_access(),
 				 errmsg("could not seek in file \"%s\": %m", filename)));
