[systemd-commits] 3 commits - src/journal src/shared src/timesync

Lennart Poettering lennart at kemper.freedesktop.org
Sun Nov 30 13:59:03 PST 2014


 src/journal/journald-server.c    |   12 ++++++++++--
 src/shared/cgroup-util.c         |    2 +-
 src/timesync/timesyncd-manager.c |   26 ++++++++++++++++----------
 3 files changed, 27 insertions(+), 13 deletions(-)

New commits:
commit dc8962da74c62779d8899a8166f704c30287fff0
Author: Ross Lagerwall <rosslagerwall at gmail.com>
Date:   Sat Nov 29 11:31:30 2014 +0000

    cgroup-util: Don't send SIGCONT after SIGKILL

diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c
index bc5030e..e595d89 100644
--- a/src/shared/cgroup-util.c
+++ b/src/shared/cgroup-util.c
@@ -195,7 +195,7 @@ int cg_kill(const char *controller, const char *path, int sig, bool sigcont, boo
                                 if (ret >= 0 && errno != ESRCH)
                                         ret = -errno;
                         } else {
-                                if (sigcont)
+                                if (sigcont && sig != SIGKILL)
                                         kill(pid, SIGCONT);
 
                                 if (ret == 0)

commit f89c4e15c966cd3af22bd71bd5adba9a0a8e7404
Author: Lennart Poettering <lennart at poettering.net>
Date:   Sun Nov 30 02:31:38 2014 +0100

    timesyncd: minor simplification

diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c
index 3653854..ef5854d 100644
--- a/src/timesync/timesyncd-manager.c
+++ b/src/timesync/timesyncd-manager.c
@@ -133,6 +133,7 @@ struct ntp_msg {
 static int manager_arm_timer(Manager *m, usec_t next);
 static int manager_clock_watch_setup(Manager *m);
 static int manager_listen_setup(Manager *m);
+static void manager_listen_stop(Manager *m);
 
 static double ntp_ts_short_to_d(const struct ntp_ts_short *ts) {
         return be16toh(ts->sec) + (be16toh(ts->frac) / 65536.0);
@@ -185,11 +186,9 @@ static int manager_send_request(Manager *m) {
 
         m->event_timeout = sd_event_source_unref(m->event_timeout);
 
-        if (m->server_socket < 0) {
-                r = manager_listen_setup(m);
-                if (r < 0)
-                        return log_warning_errno(r, "Failed to setup connection socket: %m");
-        }
+        r = manager_listen_setup(m);
+        if (r < 0)
+                return log_warning_errno(r, "Failed to setup connection socket: %m");
 
         /*
          * Set transmit timestamp, remember it; the server will send that back
@@ -607,8 +606,7 @@ static int manager_receive_response(sd_event_source *source, int fd, uint32_t re
         m->retry_interval = 0;
 
         /* Stop listening */
-        m->event_receive = sd_event_source_unref(m->event_receive);
-        m->server_socket = safe_close(m->server_socket);
+        manager_listen_stop(m);
 
         /* announce leap seconds */
         if (NTP_FIELD_LEAP(ntpmsg.field) & NTP_LEAP_PLUSSEC)
@@ -700,7 +698,9 @@ static int manager_listen_setup(Manager *m) {
 
         assert(m);
 
-        assert(m->server_socket < 0);
+        if (m->server_socket >= 0)
+                return 0;
+
         assert(!m->event_receive);
         assert(m->current_server_address);
 
@@ -723,6 +723,13 @@ static int manager_listen_setup(Manager *m) {
         return sd_event_add_io(m->event, &m->event_receive, m->server_socket, EPOLLIN, manager_receive_response, m);
 }
 
+static void manager_listen_stop(Manager *m) {
+        assert(m);
+
+        m->event_receive = sd_event_source_unref(m->event_receive);
+        m->server_socket = safe_close(m->server_socket);
+}
+
 static int manager_begin(Manager *m) {
         _cleanup_free_ char *pretty = NULL;
         int r;
@@ -952,8 +959,7 @@ void manager_disconnect(Manager *m) {
 
         m->event_timer = sd_event_source_unref(m->event_timer);
 
-        m->event_receive = sd_event_source_unref(m->event_receive);
-        m->server_socket = safe_close(m->server_socket);
+        manager_listen_stop(m);
 
         m->event_clock_watch = sd_event_source_unref(m->event_clock_watch);
         m->clock_watch_fd = safe_close(m->clock_watch_fd);

commit 4ec3cd7391e119b597375c547cf4ed50fce9f115
Author: Lennart Poettering <lennart at poettering.net>
Date:   Sun Nov 30 00:51:45 2014 +0100

    journald: close passed fds we cannot make sense of
    
    This is mostly likely the audit socket, and we really should close it
    if we cannot make sense of it, since as long as it is open the kernel
    might disable the kmsg forwarding of audit msgs, and we should avoid
    that, since audit msgs might get completely lost then.
    
    I also downgraded the log message we show a bit, after all things should
    really work fine, and we proceed fine with it.

diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
index 3bee18b..80c9736 100644
--- a/src/journal/journald-server.c
+++ b/src/journal/journald-server.c
@@ -1552,8 +1552,16 @@ int server_init(Server *s) {
 
                         s->audit_fd = fd;
 
-                } else
-                        log_error("Unknown socket passed as file descriptor %d, ignoring.", fd);
+                } else {
+                        log_warning("Unknown socket passed as file descriptor %d, ignoring.", fd);
+
+                        /* Let's close the fd, better be safe than
+                           sorry. The fd might reference some resource
+                           that we really want to release if we don't
+                           make use of it. */
+
+                        safe_close(fd);
+                }
         }
 
         r = server_open_syslog_socket(s);



More information about the systemd-commits mailing list