From: Simon McVittie Date: Mon, 21 Feb 2022 16:02:13 +0000 (+0000) Subject: spawn-unix: Don't log an error if unable to reset Linux OOM score X-Git-Tag: dbus-1.12.22~3^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c32b5cc4ed4ec04cd8554098b67cdff640edf927;p=thirdparty%2Fdbus.git spawn-unix: Don't log an error if unable to reset Linux OOM score We cannot safely log between fork() and exec() because it isn't an async-signal-safe operation (in particular it might allocate memory). We also don't want to treat a failure here as a real problem, because it might legitimately not work: in a system dbus-daemon that has dropped privileges from root, the pseudo-file representing this process parameter remains owned by root and cannot be altered by the unprivileged user. For the main use-case for this operation, the system dbus-daemon, we have another opportunity to do this in the dbus-daemon-launch-helper (see the previous commit). Signed-off-by: Simon McVittie (cherry picked from commit 7ee72a27957be5d3436beaa02ccd01b9ce042962) --- diff --git a/dbus/dbus-spawn.c b/dbus/dbus-spawn.c index b4aff6768..0459dc210 100644 --- a/dbus/dbus-spawn.c +++ b/dbus/dbus-spawn.c @@ -1397,13 +1397,11 @@ _dbus_spawn_async_with_babysitter (DBusBabysitter **sitter_p, } else if (grandchild_pid == 0) { - const char *error_str = NULL; - - if (!_dbus_reset_oom_score_adj (&error_str)) - { - /* TODO: Strictly speaking, this is not async-signal-safe. */ - _dbus_warn ("%s: %s", error_str, strerror (errno)); - } + /* This might not succeed in a dbus-daemon that started as root + * and dropped privileges, so don't log an error on failure. + * (Also, we can't safely log errors here anyway, because logging + * is not async-signal safe). */ + _dbus_reset_oom_score_adj (NULL); /* Go back to ignoring SIGPIPE, since it's evil */