From 007c9dd24554a6b73695498bc449e32bf1a3b4b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= Date: Mon, 15 Jun 2020 08:25:49 +0000 Subject: only set 'bpf.progs_loaded' property on eBPF capable devices... MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... which also means waitForProgsLoaded() has to be a no-op on pre-bpf devices. This is more consistent: it's weird to have bpf.progs_loaded set on a 4.4 device. Test: builds, atest Bug: 150040815 Signed-off-by: Maciej Żenczykowski Original-Change: https://android-review.googlesource.com/1335517 Merged-In: Iddabcf56c187ea518dd2e4d8db451b2f6902aa8e Change-Id: Iddabcf56c187ea518dd2e4d8db451b2f6902aa8e --- bpfloader/BpfLoader.cpp | 8 ++++---- libbpf_android/Loader.cpp | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bpfloader/BpfLoader.cpp b/bpfloader/BpfLoader.cpp index 5390fb4..9e348e5 100644 --- a/bpfloader/BpfLoader.cpp +++ b/bpfloader/BpfLoader.cpp @@ -72,10 +72,10 @@ void loadAllElfObjects(void) { } int main() { - if (android::bpf::isBpfSupported()) { - // Load all ELF objects, create programs and maps, and pin them - loadAllElfObjects(); - } + if (!android::bpf::isBpfSupported()) return 0; + + // Load all ELF objects, create programs and maps, and pin them + loadAllElfObjects(); if (android::base::SetProperty("bpf.progs_loaded", "1") == false) { ALOGE("Failed to set bpf.progs_loaded property\n"); diff --git a/libbpf_android/Loader.cpp b/libbpf_android/Loader.cpp index f808dc6..4244eb7 100644 --- a/libbpf_android/Loader.cpp +++ b/libbpf_android/Loader.cpp @@ -650,6 +650,8 @@ int loadProg(const char* elfPath) { } void waitForProgsLoaded() { + if (!android::bpf::isBpfSupported()) return; + while (!android::base::WaitForProperty("bpf.progs_loaded", "1", std::chrono::seconds(5))) { ALOGW("Waited 5s for bpf.progs_loaded, still waiting..."); } -- cgit v1.2.3