chiark / gitweb /
core: fix manager_get_unit_by_pid() special casing of manager PID
authorLennart Poettering <lennart@poettering.net>
Thu, 11 Jan 2018 22:38:46 +0000 (23:38 +0100)
committerSven Eden <yamakuzure@gmx.net>
Wed, 30 May 2018 05:50:14 +0000 (07:50 +0200)
Previously, we'd hard map PID 1 to the manager scope unit. That's wrong
however when we are run in --user mode, as the PID 1 is outside of the
subtree we manage and the manager PID might be very differently. Correct
that by checking for getpid() rather than hardcoding 1.

src/core/cgroup.c

index cc0b7b167bf0b50359d4d2d95c6d87af3c0c76aa..46eace7cb97d6a348f01c8f5ee09561b35011dd4 100644 (file)
@@ -2220,7 +2220,7 @@ Unit *manager_get_unit_by_pid(Manager *m, pid_t pid) {
         if (pid <= 0)
                 return NULL;
 
-        if (pid == 1)
+        if (pid == getpid_cached())
                 return hashmap_get(m->units, SPECIAL_INIT_SCOPE);
 
         u = hashmap_get(m->watch_pids1, PID_TO_PTR(pid));