diff options
author | Simon McVittie <smcv@collabora.com> | 2022-02-21 16:02:13 +0000 |
---|---|---|
committer | Simon McVittie <smcv@collabora.com> | 2022-02-25 14:57:18 +0000 |
commit | c32b5cc4ed4ec04cd8554098b67cdff640edf927 (patch) | |
tree | 62f28229f9e1c0295c629240292e84845849d109 | |
parent | e7a4123d6e4096a22a6b32f9a84747ab95590577 (diff) | |
download | dbus-c32b5cc4ed4ec04cd8554098b67cdff640edf927.tar.gz |
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 <smcv@collabora.com>
(cherry picked from commit 7ee72a27957be5d3436beaa02ccd01b9ce042962)
-rw-r--r-- | dbus/dbus-spawn.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/dbus/dbus-spawn.c b/dbus/dbus-spawn.c index b4aff676..0459dc21 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 */ |