From a79f75109e6e5a916cd70d35ef192ae85e4f0266 Mon Sep 17 00:00:00 2001 From: Julia Kartseva Date: Nov 30 2021 21:45:58 +0000 Subject: core: fix bpf-foreign cg controller realization Requiring /sys/fs/bpf path to be a mount point at the moment of cgroup controllers realization does more harm than good, because: * Realization happens early on boot, the mount point may not be ready at the time. That happens if mounts are made by a .mount unit (the issue we encountered). * BPF filesystem may be mounted on another point. Remove the check. Instead verify that path provided by BPFProgram= is within BPF fs when unit properties are parsed. Split in two commits for simple backport. --- diff --git a/src/core/bpf-foreign.c b/src/core/bpf-foreign.c index 98655bd..743632c 100644 --- a/src/core/bpf-foreign.c +++ b/src/core/bpf-foreign.c @@ -111,16 +111,6 @@ static int bpf_foreign_prepare( return 0; } -int bpf_foreign_supported(void) { - int r; - - r = cg_all_unified(); - if (r <= 0) - return r; - - return path_is_mount_point("/sys/fs/bpf", NULL, 0); -} - int bpf_foreign_install(Unit *u) { _cleanup_free_ char *cgroup_path = NULL; CGroupBPFForeignProgram *p; diff --git a/src/core/bpf-foreign.h b/src/core/bpf-foreign.h index 7704986..530fc89 100644 --- a/src/core/bpf-foreign.h +++ b/src/core/bpf-foreign.h @@ -4,7 +4,10 @@ #include "unit.h" -int bpf_foreign_supported(void); +static inline int bpf_foreign_supported(void) { + return cg_all_unified(); +} + /* * Attach cgroup-bpf programs foreign to systemd, i.e. loaded to the kernel by an entity * external to systemd.