BpfHandler: abort on U+ if unexpected cgroup mount path
This is defined here:
http://cs/h/android/platform/superproject/+/master:system/core/libprocessgroup/profiles/cgroups.json?l=27
and has been a constant since
https://android-review.googlesource.com/c/platform/system/core/+/1324649
was merged back on August 21, 2020 (ie. Android S)
But currently there's no easy way to get at this constant
from mainline code... which means it's very difficult
to do any bpf cgroup attach/detach from mainline.
btw. this appears to also be already hardcoded in:
http://cs/h/android/platform/superproject/+/master:packages/modules/Connectivity/service/src/com/android/server/connectivity/ConnectivityNativeService.java?l=48
as well
Fix: 285432857
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
(cherry picked from https://android-review.googlesource.com/q/commit:65075bb8f8290125fbd0ce8ffc5aaab6bdb3284e)
Merged-In: I99f4a5a26dd10f6ea70bf73114af0d18098de630
Change-Id: I99f4a5a26dd10f6ea70bf73114af0d18098de630
Former-commit-id: ad9ff691c4
This commit is contained in:
parent
1e63f42378
commit
b43b14acdf
|
@ -35,6 +35,9 @@ cc_library {
|
||||||
"BpfHandler.cpp",
|
"BpfHandler.cpp",
|
||||||
"NetdUpdatable.cpp",
|
"NetdUpdatable.cpp",
|
||||||
],
|
],
|
||||||
|
static_libs: [
|
||||||
|
"libmodules-utils-build",
|
||||||
|
],
|
||||||
shared_libs: [
|
shared_libs: [
|
||||||
"libbase",
|
"libbase",
|
||||||
"liblog",
|
"liblog",
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <linux/bpf.h>
|
#include <linux/bpf.h>
|
||||||
|
|
||||||
#include <android-base/unique_fd.h>
|
#include <android-base/unique_fd.h>
|
||||||
|
#include <android-modules-utils/sdk_level.h>
|
||||||
#include <bpf/WaitForProgsLoaded.h>
|
#include <bpf/WaitForProgsLoaded.h>
|
||||||
#include <log/log.h>
|
#include <log/log.h>
|
||||||
#include <netdutils/UidConstants.h>
|
#include <netdutils/UidConstants.h>
|
||||||
|
@ -74,9 +75,11 @@ static Status checkProgramAccessible(const char* programPath) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static Status initPrograms(const char* cg2_path) {
|
static Status initPrograms(const char* cg2_path) {
|
||||||
|
if (modules::sdklevel::IsAtLeastU() && !!strcmp(cg2_path, "/sys/fs/cgroup")) abort();
|
||||||
|
|
||||||
unique_fd cg_fd(open(cg2_path, O_DIRECTORY | O_RDONLY | O_CLOEXEC));
|
unique_fd cg_fd(open(cg2_path, O_DIRECTORY | O_RDONLY | O_CLOEXEC));
|
||||||
if (cg_fd == -1) {
|
if (cg_fd == -1) {
|
||||||
int ret = errno;
|
const int ret = errno;
|
||||||
ALOGE("Failed to open the cgroup directory: %s", strerror(ret));
|
ALOGE("Failed to open the cgroup directory: %s", strerror(ret));
|
||||||
return statusFromErrno(ret, "Open the cgroup directory failed");
|
return statusFromErrno(ret, "Open the cgroup directory failed");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue