From: Julia Kartseva Date: Fri, 5 Nov 2021 01:52:02 +0000 (-0700) Subject: core: fix bpf-foreign cg controller realization X-Git-Tag: v250-rc1~301^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=084d0849fc864b0377551b211def7a89b642c5e9;p=thirdparty%2Fsystemd.git 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 6b93b9785fb..686c14ce1f1 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 9559cd79812..e387b1b1d38 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.