chiark / gitweb /
networkd: add networkd-wait-online
[elogind.git] / src / journal / journald-kmsg.c
index 5c7c06a14ae42d04fad71196b260d77be985bf80..05b128f843db940ebbdc5419299718a1cbae3a4e 100644 (file)
@@ -403,7 +403,7 @@ int server_open_dev_kmsg(Server *s) {
                 return 0;
         }
 
-        r = sd_event_add_io(s->event, s->dev_kmsg_fd, EPOLLIN, dispatch_dev_kmsg, s, &s->dev_kmsg_event_source);
+        r = sd_event_add_io(s->event, &s->dev_kmsg_event_source, s->dev_kmsg_fd, EPOLLIN, dispatch_dev_kmsg, s);
         if (r < 0) {
 
                 /* This will fail with EPERM on older kernels where
@@ -428,8 +428,13 @@ int server_open_dev_kmsg(Server *s) {
         return 0;
 
 fail:
-        close_nointr_nofail(s->dev_kmsg_fd);
-        s->dev_kmsg_fd = -1;
+        if (s->dev_kmsg_event_source)
+                s->dev_kmsg_event_source = sd_event_source_unref(s->dev_kmsg_event_source);
+
+        if (s->dev_kmsg_fd >= 0) {
+                close_nointr_nofail(s->dev_kmsg_fd);
+                s->dev_kmsg_fd = -1;
+        }
 
         return r;
 }