udev: check whether systemd is running, and do not use cg_kill() if not
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 6 Feb 2019 18:34:13 +0000 (19:34 +0100)
committerMartin Pitt <mpitt@debian.org>
Mon, 18 Feb 2019 13:54:04 +0000 (13:54 +0000)
Fixes #11645.

(cherry picked from commit 31cbd2025359e1e8435a2dc371e439591846d8c4)

Gbp-Pq: Name udev-check-whether-systemd-is-running-and-do-not-use-cg_k.patch

src/udev/udevd.c

index a1050a75539d82e2b0bdb4c1c97867e59267bb5a..7302b062ac276abbcb49081fd85c849f4ff6846a 100644 (file)
@@ -1799,10 +1799,10 @@ static int run(int argc, char *argv[]) {
 
         dev_setup(NULL, UID_INVALID, GID_INVALID);
 
-        if (getppid() == 1) {
-                /* get our own cgroup, we regularly kill everything udev has left behind
-                   we only do this on systemd systems, and only if we are directly spawned
-                   by PID1. otherwise we are not guaranteed to have a dedicated cgroup */
+        if (getppid() == 1 && sd_booted() > 0) {
+                /* Get our own cgroup, we regularly kill everything udev has left behind.
+                 * We only do this on systemd systems, and only if we are directly spawned
+                 * by PID1. Otherwise we are not guaranteed to have a dedicated cgroup. */
                 r = cg_pid_get_path(SYSTEMD_CGROUP_CONTROLLER, 0, &cgroup);
                 if (r < 0) {
                         if (IN_SET(r, -ENOENT, -ENOMEDIUM))