]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: fix shutdown of --user 1346/head
authorDavid Herrmann <dh.herrmann@gmail.com>
Tue, 22 Sep 2015 20:56:01 +0000 (22:56 +0200)
committerDavid Herrmann <dh.herrmann@gmail.com>
Tue, 22 Sep 2015 20:56:01 +0000 (22:56 +0200)
Shutting down a user session currently fails with:

Sep 22 22:35:38 david-t2 systemd[640]: Reached target Shutdown.
Sep 22 22:35:38 david-t2 systemd[640]: Starting Exit the Session...
Sep 22 22:35:38 david-t2 systemd[640]: Received SIGRTMIN+24 from PID 659 (kill).
Sep 22 22:35:38 david-t2 systemd[640]: Shutting down.
Sep 22 22:35:38 david-t2 systemd[640]: Not executed by init (PID 1).
Sep 22 22:35:38 david-t2 systemd[640]: Critical error while doing system shutdown: Operation not permitted

This is a regression from:

    commit 287419c119ef961db487a281162ab037eba70c61
    Author: Alban Crequy <alban.crequy@gmail.com>
    Date:   Fri Sep 18 13:37:34 2015 +0200

        containers: systemd exits with non-zero code

Make sure we never ever execute systemd-shutdown from within a
user-manager. Restore the previous behavior by partially reverting given
commit.

src/core/main.c

index 9c1f8648e7203f5c6f20cb4c5e6a7d942408ab61..b57f4c1b7a0360b31fb921d006feec055388702c 100644 (file)
@@ -1807,6 +1807,13 @@ int main(int argc, char *argv[]) {
                         goto finish;
 
                 case MANAGER_EXIT:
+                        if (m->running_as == MANAGER_USER) {
+                                retval = EXIT_SUCCESS;
+                                log_debug("Exit.");
+                                goto finish;
+                        }
+
+                        /* fallthrough */
                 case MANAGER_REBOOT:
                 case MANAGER_POWEROFF:
                 case MANAGER_HALT: