summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bpfloader/BpfLoader.cpp27
1 files changed, 16 insertions, 11 deletions
diff --git a/bpfloader/BpfLoader.cpp b/bpfloader/BpfLoader.cpp
index 7a68894..788009e 100644
--- a/bpfloader/BpfLoader.cpp
+++ b/bpfloader/BpfLoader.cpp
@@ -112,17 +112,22 @@ void createSysFsBpfSubDir(const char* const prefix) {
}
int main() {
- // Load all ELF objects, create programs and maps, and pin them
- for (const auto location : locations) {
- createSysFsBpfSubDir(location.prefix);
- if (loadAllElfObjects(location.dir, location.prefix) != 0) {
- ALOGE("=== CRITICAL FAILURE LOADING BPF PROGRAMS FROM %s ===", location.dir);
- ALOGE("If this triggers reliably, you're probably missing kernel options or patches.");
- ALOGE("If this triggers randomly, you might be hitting some memory allocation "
- "problems or startup script race.");
- ALOGE("--- DO NOT EXPECT SYSTEM TO BOOT SUCCESSFULLY ---");
- sleep(20);
- return 2;
+ bool ebpf_supported = android::base::GetBoolProperty("ro.kernel.ebpf.supported", true);
+
+ if (ebpf_supported) {
+ // Load all ELF objects, create programs and maps, and pin them
+ for (const auto location : locations) {
+ createSysFsBpfSubDir(location.prefix);
+ if (loadAllElfObjects(location.dir, location.prefix) != 0) {
+ ALOGE("=== CRITICAL FAILURE LOADING BPF PROGRAMS FROM %s ===", location.dir);
+ ALOGE("If this triggers reliably, you're probably missing kernel options "
+ "or patches.");
+ ALOGE("If this triggers randomly, you might be hitting some memory allocation "
+ "problems or startup script race.");
+ ALOGE("--- DO NOT EXPECT SYSTEM TO BOOT SUCCESSFULLY ---");
+ sleep(20);
+ return 2;
+ }
}
}