diff --git a/gensignkey.c b/gensignkey.c
index cb66ffff7fef7038cec7918e64729b1867806055..338bbefeafd15dd24e2e211dc2fb05beb0a296cd 100644
--- a/gensignkey.c
+++ b/gensignkey.c
@@ -26,7 +26,7 @@ static int buf_writefile(buffer * buf, const char * filename) {
 	while (buf->pos != buf->len) {
 		int len = write(fd, buf_getptr(buf, buf->len - buf->pos),
 				buf->len - buf->pos);
-		if (errno == EINTR) {
+		if (len == -1 && errno == EINTR) {
 			continue;
 		}
 		if (len <= 0) {