Ensure services in plugins and from finit.c belong to a cgroup

The udevd, dbus, bundled watchdog, and others were started without a
valid cgroup.  This is a workaround to ensure they are assigned one.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg
2021-05-15 10:27:59 +02:00
parent f86e7810be
commit b04dc4d457
4 changed files with 7 additions and 8 deletions
+1 -1
View File
@@ -64,7 +64,7 @@ static void setup(void *arg)
remove("/var/run/dbus/pid"); remove("/var/run/dbus/pid");
/* Register service with Finit */ /* Register service with Finit */
snprintf(line, sizeof(line), "[S12345789] @%s:%s %s %s -- %s", snprintf(line, sizeof(line), "[S12345789] cgroup.system @%s:%s %s %s -- %s",
DAEMONUSER, DAEMONUSER, cmd, ARGS, DESC); DAEMONUSER, DAEMONUSER, cmd, ARGS, DESC);
if (service_register(SVC_TYPE_SERVICE, line, global_rlimit, NULL)) if (service_register(SVC_TYPE_SERVICE, line, global_rlimit, NULL))
_pe("Failed registering %s", DAEMON); _pe("Failed registering %s", DAEMON);
+3 -3
View File
@@ -48,17 +48,17 @@ static void setup(void *arg)
path = which("/lib/systemd/systemd-udevd"); path = which("/lib/systemd/systemd-udevd");
if (path) { if (path) {
/* Register udevd as a monitored service */ /* Register udevd as a monitored service */
snprintf(cmd, sizeof(cmd), "[S12345789] pid:udevd name:udevd log %s " snprintf(cmd, sizeof(cmd), "[S12345789] cgroup.system pid:udevd name:udevd log %s "
"-- Device event managing daemon", path); "-- Device event managing daemon", path);
if (service_register(SVC_TYPE_SERVICE, cmd, global_rlimit, NULL)) { if (service_register(SVC_TYPE_SERVICE, cmd, global_rlimit, NULL)) {
_pe("Failed registering %s", path); _pe("Failed registering %s", path);
} else { } else {
snprintf(cmd, sizeof(cmd), ":1 [S] <pid/udevd> log " snprintf(cmd, sizeof(cmd), "cgroup.init :1 [S] <pid/udevd> log "
"udevadm trigger -c add -t devices " "udevadm trigger -c add -t devices "
"-- Requesting device events"); "-- Requesting device events");
service_register(SVC_TYPE_RUN, cmd, global_rlimit, NULL); service_register(SVC_TYPE_RUN, cmd, global_rlimit, NULL);
snprintf(cmd, sizeof(cmd), ":2 [S] <pid/udevd> log " snprintf(cmd, sizeof(cmd), "cgroup.init :2 [S] <pid/udevd> log "
"udevadm trigger -c add -t subsystems " "udevadm trigger -c add -t subsystems "
"-- Requesting subsystem events"); "-- Requesting subsystem events");
service_register(SVC_TYPE_RUN, cmd, global_rlimit, NULL); service_register(SVC_TYPE_RUN, cmd, global_rlimit, NULL);
+2 -3
View File
@@ -36,7 +36,7 @@
#define MODULES_LOAD_PATH "/etc/modules-load.d" #define MODULES_LOAD_PATH "/etc/modules-load.d"
#endif #endif
#define SERVICE_LINE \ #define SERVICE_LINE \
":%d name:modprobe.%s [2345] /sbin/modprobe %s %s -- Kernel module: %s" "cgroup.init :%d name:modprobe.%s [2345] /sbin/modprobe %s %s -- Kernel module: %s"
static void load(void *arg) static void load(void *arg)
{ {
@@ -71,8 +71,7 @@ static void load(void *arg)
mod = strtok_r(mod, " ", &args); mod = strtok_r(mod, " ", &args);
snprintf(cmd, sizeof(cmd), SERVICE_LINE, snprintf(cmd, sizeof(cmd), SERVICE_LINE, index, mod, mod, args, mod);
index, mod, mod, args, mod);
service_register(SVC_TYPE_TASK, cmd, global_rlimit, NULL); service_register(SVC_TYPE_TASK, cmd, global_rlimit, NULL);
index++; index++;
+1 -1
View File
@@ -590,7 +590,7 @@ int main(int argc, char *argv[])
* Start built-in watchdogd as soon as possible, if enabled * Start built-in watchdogd as soon as possible, if enabled
*/ */
if (whichp(FINIT_LIBPATH_ "/watchdogd") && fexist(WDT_DEVNODE)) { if (whichp(FINIT_LIBPATH_ "/watchdogd") && fexist(WDT_DEVNODE)) {
service_register(SVC_TYPE_SERVICE, "[123456789] name:watchdog :finit " FINIT_LIBPATH_ "/watchdogd -- Finit watchdog daemon", global_rlimit, NULL); service_register(SVC_TYPE_SERVICE, "[123456789] cgroup.init name:watchdog :finit " FINIT_LIBPATH_ "/watchdogd -- Finit watchdog daemon", global_rlimit, NULL);
wdog = svc_find_by_nameid("watchdog", "finit"); wdog = svc_find_by_nameid("watchdog", "finit");
} }