summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorDaan De Meyer <daan.j.demeyer@gmail.com>2023-05-11 08:47:38 +0200
committerDaan De Meyer <daan.j.demeyer@gmail.com>2023-05-12 07:48:29 +0200
commit3f92250f4c10a723693b734b803c98f3b0d53f3e (patch)
treedbe3993d0e041cccb42b63fc9b1fab8fa774641b /src/core
parentf466e828dbce3c085faa5dc782d1b0031d6e421b (diff)
downloadsystemd-3f92250f4c10a723693b734b803c98f3b0d53f3e.tar.gz
core: Make sure systemctl exit <X> works outside of a container
When running in a VM, we now support propagating the exit status via a vsock notify socket, so drop the restrictions on propagating an exit status when not in a container to make sure this works properly.
Diffstat (limited to 'src/core')
-rw-r--r--src/core/dbus-manager.c3
-rw-r--r--src/core/main.c6
2 files changed, 2 insertions, 7 deletions
diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
index fb608cd295..b18aa1d4ff 100644
--- a/src/core/dbus-manager.c
+++ b/src/core/dbus-manager.c
@@ -1943,9 +1943,6 @@ static int method_set_exit_code(sd_bus_message *message, void *userdata, sd_bus_
if (r < 0)
return r;
- if (MANAGER_IS_SYSTEM(m) && detect_container() <= 0)
- return sd_bus_error_set(error, SD_BUS_ERROR_NOT_SUPPORTED, "ExitCode can only be set for user service managers or in containers.");
-
m->return_value = code;
return sd_bus_reply_method_return(message, NULL);
diff --git a/src/core/main.c b/src/core/main.c
index 5274bcc106..e86e0d941e 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -1515,10 +1515,8 @@ static int become_shutdown(int objective, int retval) {
if (log_get_show_time())
command_line[pos++] = "--log-time";
- if (objective == MANAGER_EXIT) {
- xsprintf(exit_code, "--exit-code=%d", retval);
- command_line[pos++] = exit_code;
- }
+ xsprintf(exit_code, "--exit-code=%d", retval);
+ command_line[pos++] = exit_code;
assert(pos < ELEMENTSOF(command_line));