diff --git a/vl.c b/vl.c
index 05206c1..dbf4fec 100644
--- a/vl.c
+++ b/vl.c
@@ -1374,6 +1374,21 @@
 
 #ifndef _WIN32
 
+/* Sets a specific flag */
+static int fcntl_setfl(int fd, int flag)
+{
+    int flags;
+
+    flags = fcntl(fd, F_GETFL);
+    if (flags == -1)
+        return -errno;
+
+    if (fcntl(fd, F_SETFL, flags | flag) == -1)
+        return -errno;
+
+    return 0;
+}
+
 #if defined(__linux__)
 
 #define RTC_FREQ 1024
@@ -1388,7 +1403,7 @@
     act.sa_handler = host_alarm_handler;
 
     sigaction(SIGIO, &act, NULL);
-    fcntl(fd, F_SETFL, O_ASYNC);
+    fcntl_setfl(fd, O_ASYNC);
     fcntl(fd, F_SETOWN, getpid());
 }
 
@@ -1674,22 +1689,24 @@
 
 #endif /* _WIN32 */
 
-static void init_timer_alarm(void)
+static int init_timer_alarm(void)
 {
     struct qemu_alarm_timer *t = NULL;
     int i, err = -1;
     int fds[2];
 
-    if (pipe(fds) < 0) {
-    fail:
-        perror("creating timer pipe");
-        exit(1);
-    }
-    for (i = 0; i < 2; i++) {
-        int flags = fcntl(fds[i], F_GETFL);
-        if (flags == -1 || fcntl(fds[i], F_SETFL, flags | O_NONBLOCK))
-            goto fail;
-    }
+    err = pipe(fds);
+    if (err == -1)
+        return -errno;
+
+    err = fcntl_setfl(fds[0], O_NONBLOCK);
+    if (err < 0)
+        goto fail;
+
+    err = fcntl_setfl(fds[1], O_NONBLOCK);
+    if (err < 0)
+        goto fail;
+
     alarm_timer_rfd = fds[0];
     alarm_timer_wfd = fds[1];
 
@@ -1702,12 +1719,18 @@
     }
 
     if (err) {
-        fprintf(stderr, "Unable to find any suitable alarm timer.\n");
-        fprintf(stderr, "Terminating\n");
-        exit(1);
+        err = -ENOENT;
+        goto fail;
     }
 
     alarm_timer = t;
+
+    return 1;
+
+fail:
+    close(fds[0]);
+    close(fds[1]);
+    return err;
 }
 
 static void quit_timers(void)
@@ -6075,7 +6098,10 @@
     setvbuf(stdout, NULL, _IOLBF, 0);
 
     init_timers();
-    init_timer_alarm();
+    if (init_timer_alarm() < 0) {
+        fprintf(stderr, "could not initialize alarm timer\n");
+        exit(1);
+    }
     if (use_icount && icount_time_shift < 0) {
         use_icount = 2;
         /* 125MIPS seems a reasonable initial guess at the guest speed.
