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
This commit is contained in:
committed by
Lorenzo Colitti
parent
43529a075d
commit
ad9ff691c4
@@ -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");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user